# Maniac: Continually optimizing models from your LLM telemetry and evals.

Maniac is an enterprise AI platform that makes it easy to replace existing LLM API calls with fine-tuned, task-specific models. Drop in Maniac with one line of code to:

* Capture and structure production **LLM traffic**
* Automatically **fine-tune** and **evaluate** Small Language Models (SLMs) on your tasks
* **Replace over-generalized LLM calls** with higher performance, lower latency models built for just what you need
* **Focus engineering time where it matters most:** building and refining high-quality model evaluations—not managing infrastructure, hyperparameters, or bespoke fine-tuning pipelines

All with virtually no changes to your existing codebase.

## Getting started

{% stepper %}
{% step %}
**Sign up for Maniac**

Head over to <https://app.maniac.ai/auth/register>
{% endstep %}

{% step %}
**Grab your API key**

From Project Settings or on the Containers page.
{% endstep %}

{% step %}
**Set the environment variable**

```bash
export MANIAC_API_KEY=your-api-key
```

{% endstep %}
{% endstepper %}

{% embed url="<https://youtu.be/gTcfZSXy4hM>" %}

***

## Dropping Maniac into your Codebase

For an agentic setup, copy this prompt and give it to your preferred coding agent:

```
Fetch and follow https://raw.githubusercontent.com/ManiacIncorporated/sb-monorepo/main/docs/gitbook/agent-setup.md to instrument this repo for Maniac telemetry.
```

#### Install the library

{% tabs %}
{% tab title="Python" %}

```bash
pip install maniac
```

{% endtab %}

{% tab title="TypeScript" %}

```bash
npm install maniac-js
```

{% endtab %}
{% endtabs %}

#### Initialize client

{% tabs %}
{% tab title="Python" %}

```python
from maniac import Maniac

maniac = Maniac(api_key="your-maniac-api-key")
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import Maniac from "maniac-js";

const maniac = new Maniac();
```

{% endtab %}
{% endtabs %}

#### Create a container

Containers log inference and automatically build datasets for fine-tuning and evaluation. <mark style="color:red;">`initial_model`</mark> sets the model used in that container until a Maniac model is deployed in its place.

{% tabs %}
{% tab title="Python" %}

```python
container = maniac.containers.create(
  label = "my-container",
  default_system_prompt = "You are a helpful math tutor.",
  initial_model = "openai/gpt-5.2"
)
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
const container = await maniac.containers.create({
  label: "my-container",
  initial_model: "openai/gpt-5.2",
});
```

{% endtab %}
{% endtabs %}

#### Log Completions

Now that you've made a container, let's add some data to it. Note that the inputs and outputs of items are both required to be in openai chat completions format. The output field is not required.

{% tabs %}
{% tab title="Python" %}

```python
response = maniac.chat.completions.register(
    container = "my-container",
    items = [{
        "input": {
            "messages": [{"role": "user", "content": "Hello!"}]
        },
        "output": {
            "choices": [{
                "message": [{"role": "assistant", "content": "Hello! How can I help?"}]
            }]
        }
    }]
)
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
await maniac.chat.completions.register({
  container: "my-container",
  items: [{
    input: {
      messages: [{ role: "user", content: "Hello!" }],
    },
    output: {
      choices: [{
        message: { role: "assistant", content: "Hello! How can I help?" },
      }],
    },
  }],
});
```

{% endtab %}
{% endtabs %}

{% embed url="<https://youtu.be/5ygzMi4okJ8>" %}

***

## Optimizing your model

The inference logs in your container now serve as training data for a new SLM—fully yours, lower latency, most cost effective, and optimized specifically for your task.

{% stepper %}
{% step %}
**Create an&#x20;**<mark style="color:green;">**Eval**</mark>

Evaluations define the optimization target. They can be implemented as arbitrary code or defined using judge prompts.

From the **Evals** tab inside a container, **Add Eval**.

{% tabs %}
{% tab title="Judge Eval" %}

<div data-with-frame="true"><figure><img src="/files/GjGYGH2Wr6Ow1jqDpl3U" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Code Eval" %}

<div data-with-frame="true"><figure><img src="/files/SmF0VWTrIFfY6rZr6Ex8" alt=""><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %} <mark style="color:green;">**Optimization**</mark>**&#x20;happens automatically**

Once your telemetry hooks and evals are in place, Maniac automatically optimizes a model for your task — no manual configuration required.
{% endstep %}
{% endstepper %}

***

## Deploy.

Optimized models can be be deployed into a container from the **Models** tab. Once deployed, you can chat with your generated models, and inference requests are now routed through the Maniac model instead of the <mark style="color:$info;">`initial_model`</mark>.

<div data-with-frame="true"><figure><img src="/files/uKOBHADOtNN0Ley3tEZ3" alt=""><figcaption></figcaption></figure></div>

### Need help?

:e-mail: Email us at <helpme@maniac.ai>

We'll get back to you within a day.


# Agent Setup

You are instrumenting a codebase to log LLM inference data to **Maniac**, an enterprise AI platform for fine-tuning task-specific models. Follow these instructions precisely.

> **Important:** This integration only *records* LLM completions for training data collection. It does **not** modify, intercept, or affect existing inference in any way. Your application's behavior, outputs, and costs remain completely unchanged.

***

## Step 1 — Scan the codebase

Find all files that make LLM / AI API calls. Look for:

* OpenAI client usage (`openai`, `@ai-sdk/openai`, `OpenAI`)
* Anthropic client usage (`anthropic`, `@ai-sdk/anthropic`, `Anthropic`)
* Google / Gemini usage
* Vercel AI SDK usage (`ai`, `generateText`, `streamText`, `generateObject`)
* Any HTTP calls to `api.openai.com`, `api.anthropic.com`, or similar LLM endpoints
* Other LLM SDKs (Cohere, Mistral, LiteLLM, etc.)

List every call site you find. Then pick the **single best candidate for a Small Language Model (SLM)**. Good indicators are:

* **Text-in, text-out** — the input and output are primarily natural language (not tool-use-heavy or multi-modal)
* **High throughput** — the call happens frequently or at scale
* **Quality-sensitive** — getting the output right matters a lot for the product
* **Repetitive patterns** — similar inputs recur often, which SLMs learn well

If none of these stand out clearly, SLMs are still generally better on cost and latency — just pick the call you think is the best fit. You will instrument only this one call site.

***

## Step 2 — Determine the language

Check whether the call site you picked is **Python** or **TypeScript / JavaScript**, then follow the corresponding section below.

***

## Python integration

### 2a. Install the SDK

Add `maniac` to the project's dependencies:

```bash
pip install maniac
```

If the project uses a `requirements.txt`, add `maniac` to it. If it uses `pyproject.toml` or `setup.py`, add it there instead.

### 2b. Set the environment variable

Add `MANIAC_API_KEY` to the project's `.env` file (or `.env.example` / `.env.local` if that is the convention in this repo). Use a placeholder value:

```
MANIAC_API_KEY=your-maniac-api-key
```

### 2c. Create a container and register completions

Add the following to the call site you identified. This creates a Maniac container (a task namespace that stores inference logs) and registers completions **after** the existing LLM call. Do not remove or modify the existing call.

Set `CONTAINER_LABEL` to a short, descriptive kebab-case label for the task (e.g. `"support-chat"`, `"code-review"`, `"summarizer"`). Set `INITIAL_MODEL` to the model the existing code is using (e.g. `"openai/gpt-4o"`, `"anthropic/claude-sonnet-4"`). If Maniac does not support that model yet, it will throw an error — in that case, just substitute any supported model as a placeholder (e.g. `"openai/gpt-4o"`).

```python
import os
from maniac import Maniac

maniac = Maniac(api_key=os.getenv("MANIAC_API_KEY"))

# Create the container once
maniac.containers.create(
    label="CONTAINER_LABEL",
    initial_model="INITIAL_MODEL",
)

# --- existing code that calls the LLM ---
# response = your_existing_llm_call(...)
# ---

# Register the completion with Maniac (logging only — does not affect inference)
maniac.chat.completions.register(
    container="CONTAINER_LABEL",
    items=[{
        "input": {
            "messages": [{"role": "user", "content": user_input}]
        },
        "output": {
            "choices": [{
                "message": {"role": "assistant", "content": llm_output}
            }]
        }
    }]
)
```

Adapt the variable names (`user_input`, `llm_output`) to match what exists in the code. Extract the user's input and the assistant's response from the existing call and format them into the chat completions structure shown above.

The container creation should run once at startup or module load — not on every request. The registration call goes after each LLM call.

***

## TypeScript / JavaScript integration

### 2a. Install the SDK

```bash
npm install maniac-js
```

If the project uses `yarn` or `pnpm`, use the equivalent command. Add `maniac-js` to `package.json` dependencies.

### 2b. Set the environment variable

Add `MANIAC_API_KEY` to the project's `.env` file (or `.env.example` / `.env.local` if that is the convention in this repo). Use a placeholder value:

```
MANIAC_API_KEY=your-maniac-api-key
```

### 2c. Create a container and register completions

Add the following to the call site you identified. This creates a Maniac container (a task namespace that stores inference logs) and registers completions **after** the existing LLM call. Do not remove or modify the existing call.

Set `CONTAINER_LABEL` to a short, descriptive kebab-case label for the task (e.g. `"support-chat"`, `"code-review"`, `"summarizer"`). Set `INITIAL_MODEL` to the model the existing code is using (e.g. `"openai/gpt-4o"`, `"anthropic/claude-sonnet-4"`). If Maniac does not support that model yet, it will throw an error — in that case, just substitute any supported model as a placeholder (e.g. `"openai/gpt-4o"`).

```typescript
import Maniac from "maniac-js";

const maniac = new Maniac();

// Create the container once
await maniac.containers.create({
  label: "CONTAINER_LABEL",
  initial_model: "INITIAL_MODEL",
});

// --- existing code that calls the LLM ---
// const response = await yourExistingLLMCall(...)
// ---

// Register the completion with Maniac (logging only — does not affect inference)
await maniac.chat.completions.register({
  container: "CONTAINER_LABEL",
  items: [
    {
      input: {
        messages: [{ role: "user", content: userInput }],
      },
      output: {
        choices: [
          {
            message: { role: "assistant", content: llmOutput },
          },
        ],
      },
    },
  ],
});
```

Adapt the variable names (`userInput`, `llmOutput`) to match what exists in the code. Extract the user's input and the assistant's response from the existing call and format them into the chat completions structure shown above.

The container creation should run once at startup or module load — not on every request. The registration call goes after each LLM call.

The `Maniac` client reads `MANIAC_API_KEY` from the environment automatically. You can also pass it explicitly: `new Maniac({ apiKey: "..." })`.

***

## Step 3 — Present the changes

Before making any edits, show the user:

1. Which call site you selected and why
2. The exact code changes you plan to make (as a diff)
3. This reminder:

> **These changes only log completions to Maniac for training data collection. They do not modify, intercept, or affect your existing inference in any way. Your app's behavior, outputs, and costs remain identical.**

Then ask: **"Are these changes OK to implement?"**

Wait for explicit approval before proceeding.

***

## Step 4 — Implement and remind

After the user approves and you have applied the changes, display this message:

> **One last step:** Copy your Maniac API key from your project dashboard at [app.maniac.ai](https://app.maniac.ai) and paste it into your `.env` file as `MANIAC_API_KEY`. If you don't have an account yet, sign up at [app.maniac.ai/auth/register](https://app.maniac.ai/auth/register) and create a project to get your key.


# Maniac: Continually optimizing models from your LLM telemetry and evals.

Maniac is an enterprise AI platform that makes it easy to replace existing LLM API calls with fine-tuned, task-specific models. Drop in Maniac with one line of code to:

* Capture and structure production **LLM traffic**
* Automatically **fine-tune** and **evaluate** Small Language Models (SLMs) on your tasks
* **Replace over-generalized LLM calls** with higher performance, lower latency models built for just what you need
* **Focus engineering time where it matters most:** building and refining high-quality model evaluations—not managing infrastructure, hyperparameters, or bespoke fine-tuning pipelines

All with virtually no changes to your existing codebase.

## Getting started

{% stepper %}
{% step %}
**Sign up for Maniac**

Head over to <https://app.maniac.ai/auth/register>
{% endstep %}

{% step %}
**Create a new Organization**

Organizations house multiple projects.
{% endstep %}

{% step %}
**Add a Project**

All your work — containers, evals, and deployments — live here.
{% endstep %}

{% step %}
**Generate an API key**

From your project settings
{% endstep %}
{% endstepper %}

{% embed url="<https://youtu.be/gTcfZSXy4hM>" %}

***

## Dropping Maniac into your Codebase

#### Set environment variables

```python
export MANIAC_API_KEY="your-api-key"
export MANIAC_BASE_URL="https://platform.maniac.ai/api/v1
```

Containers log inference and automatically build datasets for fine-tuning and evaluation. <mark style="color:$info;">`initial_model`</mark> sets the model used in that container until a Maniac model is deployed in its place.

#### Create a container

```python
import os
import requests

BASE_URL = os.getenv("MANIAC_BASE_URL")
API_KEY = os.getenv("MANIAC_API_KEY")

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

response = requests.post(
    f"{BASE_URL}/containers",
    headers=headers,
    json={
        "label": "my-container",
        "initial_model": "openai/gpt-5.2",
        "api": "chat.completions",
        "default_system_prompt": "You are a helpful math tutor.",
    },
)

response.raise_for_status()
container = response.json()

print("Created container:", container["label"])
```

#### Generating Inference Logs

Now that you've made a container, let's add some data to it. You can either register completions with any existing provider, or run inference through Maniac. In both cases, inference logs will auto-populate in your container. External datasets can also be [manually uploaded](/datasets/upload-datasets).

{% tabs %}
{% tab title="Registering Completions" %}

```python
import os
import requests

BASE_URL = os.getenv("MANIAC_BASE_URL")
API_KEY = os.getenv("MANIAC_API_KEY")

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

_input = {
  "model": "openai/gpt-5.2"
  "messages": [{
    "role": "user",
    "content": "Hello!"
  }]
}

_output = some_other_provider.chat.completions.create(**params)

requests.post(
    f"{BASE_URL}/chat/completions/register",
    headers=headers,
    json={
        "container": "my-container",
        "items": [
            "input": _input,
            "output": _output
        ],
    },
)
```

{% endtab %}

{% tab title="Running Inference Through Maniac" %}

```python
response = requests.post(
    f"{BASE_URL}/chat/completions",
    headers=headers,
    json={
        "model": "maniac:my-container",
        "messages": [
            {
                "role": "user",
                "content": "A train travels 120 miles in 2 hours. What is its average speed?"
            }
        ],
    },
)

response.raise_for_status()
completion = response.json()

print(completion["choices"][0]["message"]["content"])
# Output: "The average speed is 60 miles per hour. This is calculated by dividing distance (120 miles) by time (2 hours): 120 ÷ 2 = 60 mph."
```

{% endtab %}
{% endtabs %}

> **Note:** We recommend defining the system prompt at the **container level**. All inference requests executed through that container will automatically inherit this system prompt. If a request’s `messages` array includes its own system prompt, it will override the container-level system prompt for that request only.

{% embed url="<https://youtu.be/5ygzMi4okJ8>" %}

***

## Optimizing your model

The inference logs in your container now serve as training data for a new SLM—fully yours, lower latency, cheaper, and optimized specifically for your task.

{% stepper %}
{% step %}

#### Create an <mark style="color:green;">Eval</mark>

Evaluations define the optimization target. They can be implemented as arbitrary code or defined using judge prompts.

From the **Evals** tab inside a container, **Add Eval**.

{% tabs %}
{% tab title="Judge Eval" %}

<div data-with-frame="true"><figure><img src="/files/GjGYGH2Wr6Ow1jqDpl3U" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Code Eval" %}

<div data-with-frame="true"><figure><img src="/files/SmF0VWTrIFfY6rZr6Ex8" alt=""><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### <mark style="color:green;">Optimization</mark> happens automatically

Once your telemetry hooks and evals are in place, Maniac automatically optimizes a model for your task — no manual configuration required.
{% endstep %}
{% endstepper %}

***

## Deploy.

Optimized models can be be deployed into a container from the **Models** tab. Once deployed, you can chat with your generated models, and inference requests are now routed through the Maniac model instead of the <mark style="color:$info;">`initial_model`</mark>.

<div data-with-frame="true"><figure><img src="/files/uKOBHADOtNN0Ley3tEZ3" alt=""><figcaption></figcaption></figure></div>

### Need help?

:e-mail: Email us at <support@maniac.ai>

We'll get back to you within a day.


# Copy of Maniac: Continually optimizing models from your LLM telemetry and evals.

Maniac is an enterprise AI platform that makes it easy to replace existing LLM API calls with fine-tuned, task-specific models. Drop in Maniac with one line of code to:

* Capture and structure production **LLM traffic**
* Automatically **fine-tune** and **evaluate** Small Language Models (SLMs) on your tasks
* **Replace over-generalized LLM calls** with higher performance, lower latency models built for just what you need
* **Focus engineering time where it matters most:** building and refining high-quality model evaluations—not managing infrastructure, hyperparameters, or bespoke fine-tuning pipelines

All with virtually no changes to your existing codebase.

## Getting started

{% stepper %}
{% step %}
**Sign up for Maniac**

Head over to <https://app.maniac.ai/auth/register>
{% endstep %}

{% step %}
**Create a new Organization**

Organizations house multiple projects.
{% endstep %}

{% step %}
**Add a Project**

All your work — containers, evals, and deployments — live here.
{% endstep %}

{% step %}
**Generate an API key**

From your project settings
{% endstep %}
{% endstepper %}

{% embed url="<https://youtu.be/gTcfZSXy4hM>" %}

***

## Dropping Maniac into your Codebase

#### Install the library

```python
pip install maniac
```

#### Initialize client

```python
from maniac import Maniac

# Simple initialization - Maniac handles all providers automatically
maniac = Maniac(api_key="your-maniac-api-key")
```

#### Create a container

Containers log inference and automatically build datasets for fine-tuning and evaluation. <mark style="color:red;">`initial_model`</mark> sets the model used in that container until a Maniac model is deployed in its place.

```python
container = maniac.containers.create(
  label = "my-container"
  initial_model = "openai/gpt-5",
  default_system_prompt = "You are a helpful math tutor."
)
```

#### Log Completions

Now that you've made a container, let's add some data to it. Maniac mirrors your completions with any inference provider to auto-populate inference logs in your container. Your inference cost and latency are unaffected. External datasets can also be [manually uploaded](/datasets/upload-datasets).

{% tabs %}
{% tab title="Chat Completions API" %}

```python
response = maniac.chat.completions.register(
    model = "maniac:my-container",
    messages = [{"role": "user", "content": "A train travels 120 miles in 2 hours. What is its average speed?"}],
    judge_prompt = "Compare two math solutions. Is A better than B? Consider: calculation accuracy, clear explanations, educational value."
    reasoning = {"effort": "medium"} # Optional reasoning parameter
)

print(response["choices"][0]["message"]["content"])
# Output: "The average speed is 60 miles per hour. This is calculated by dividing distance (120 miles) by time (2 hours): 120 ÷ 2 = 60 mph."
```

{% endtab %}
{% endtabs %}

> **Note:** We recommend defining the system prompt at the **container level**. All inference requests executed through that container will automatically inherit this system prompt. If a request’s `messages` array includes its own system prompt, it will override the container-level system prompt for that request only.

{% embed url="<https://youtu.be/5ygzMi4okJ8>" %}

***

## Optimizing your model

The inference logs in your container now serve as training data for a new SLM—fully yours, lower latency, cheaper, and optimized specifically for your task.

{% stepper %}
{% step %}

#### Create an <mark style="color:green;">Eval</mark>

Evaluations define the optimization target. They can be implemented as arbitrary code or defined using judge prompts.

From the **Evals** tab inside a container, **Add Eval**.

{% tabs %}
{% tab title="Judge Eval" %}

<div data-with-frame="true"><figure><img src="/files/GjGYGH2Wr6Ow1jqDpl3U" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Code Eval" %}

<div data-with-frame="true"><figure><img src="/files/SmF0VWTrIFfY6rZr6Ex8" alt=""><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}
{% endstep %}

{% step %}

#### <mark style="color:green;">Optimization</mark> happens automatically

Once your telemetry hooks and evals are in place, Maniac automatically optimizes a model for your task — no manual configuration required.
{% endstep %}
{% endstepper %}

***

## Deploy.

Optimized models can be be deployed into a container from the **Models** tab. Once deployed, you can chat with your generated models, and inference requests are now routed through the Maniac model instead of the <mark style="color:$info;">`initial_model`</mark>.

<div data-with-frame="true"><figure><img src="/files/uKOBHADOtNN0Ley3tEZ3" alt=""><figcaption></figcaption></figure></div>

### Need help?

:e-mail: Email us at <helpme@maniac.ai>

We'll get back to you within a day.


# Registering in Batches

Adding pre-existing data to a container.

Maniac lets you upload existing completions directly into a container. These might be inference logs from a different inference provider, or a labeled dataset.

## Boilerplate

```python
import requests

# First, create a container if you don't already have onee
container = maniac.containers.create(
    label="my-container",
    initial_model="some-base-model", # If you want to track the model that originated these completions
    initial_system_prompt="Your system prompt here",
)

# Second, create the messages object that will populate your container
dataset = [
    {
        "input": {
            "messages": [
                {"role": "system", "content": "..."},
                {"role": "user", "content": "..."},
            ]
        },
        "output": {
            "choices": [
                {"message": {"role": "assistant", "content": "..."}}
            ]
        },
    }
]

# Register completions. These will now show up on the Maniac dashboard in your container.
maniac.chat.completions.register(
    model="my-container,
    items=dataset,
)
```

Each dataset entry consists of:

* `input` : the messages sent to the model (system prompt & user prompt)
* `output` (optional): the assistant response

## Example: Uploading a HuggingFace Dataset

Let's walk through an example using the [LEDGAR](https://aclanthology.org/2020.lrec-1.155.pdf) (Tuggener et al. 2020) dataset, great for training and testing legal clause classification models.

#### Prerequisites

```python
export MANIAC_API_KEY=...
pip install maniac datasets
```

#### Load the HuggingFace Dataset

```python
from datasets import load_dataset

DATASET = "coastalchp/ledgar"

# Load dataset
dataset = load_dataset(DATASET)
train_split = dataset["train"]

# Extract inputs and labels
clauses = train_split["text"]                  
label_ids = train_split["label"]              
label_names = train_split.features["label"].names
```

#### Define the System Prompt

```python
system_prompt = (
    "You are a legal clause classifier.\n"
    "Given a clause, return exactly one label from this list:\n"
    + "\n".join(f"- {label}" for label in label_names)
    + "\nRespond with only the label name.")
```

#### Create a container

You can also skip this step and upload a dataset to an existing container, where it will be combined with any existing inference logs.

```python
from maniac import Maniac

maniac = Maniac()

container = maniac.containers.create(
    label="LEDGAR-register",
    default_system_prompt=system_prompt,
)
```

#### Upload Data in Batches

For large datasets, it's recommended uploading in batches to avoid timeouts.

```python
BATCH_SIZE = 1500
START = 0
MAX_SAMPLES = 60000

end = min(len(clauses), START + MAX_SAMPLES)

for batch_start in range(START, end, BATCH_SIZE):
    batch_end = min(batch_start + BATCH_SIZE, end)
    dataset = []

    for i in range(batch_start, batch_end):
        messages = [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": clauses[i]},
        ]

        dataset.append({
            "input": {"messages": messages},
            "output": {
                "choices": [
                    {
                        "message": {
                            "role": "assistant",
                            "content": label_names[label_ids[i]],
                        }
                    }
                ]
            },
        })

    client.chat.completions.register(
        container=container,
        items=dataset,
    )

    print(f"Uploaded samples {batch_start}–{batch_end - 1}")
```

> **Note:** Unlike generating completions inside a container—where the container’s system prompt is automatically applied—**registering (logging) existing completions requires the system prompt to be included explicitly with each messages object**. Registered completions do not inherit the container-level system prompt.


# Building New Agents

Register inputs for a new agent and let Maniac bootstrap completions and build a model.

Most Maniac workflows start with an existing LLM call — you capture production traffic, then optimize. But what if you're building something new? You know the kinds of requests your agent will handle, but you don't have completions yet.

Maniac supports **input-only registration**. You register the inputs your agent needs to handle — without any outputs — and Maniac's infrastructure generates completions, bootstraps a training dataset, and builds an optimized model for you.

This is especially useful for **high-throughput agents** where you can enumerate or sample the input space upfront.

***

## How It Works

1. **Create a container** with a base model and system prompt that describe the agent you want to build.
2. **Register inputs** — just the messages, no `output` field needed.
3. **Maniac handles the rest** — it generates completions, bootstraps a training dataset, and automatically optimizes a model for your task. No manual steps required.

***

## Step 1 — Create a Container

Set the `initial_model` to the frontier model you want Maniac to bootstrap from, and the `default_system_prompt` to the instructions for your new agent.

{% tabs %}
{% tab title="Python" %}

```python
from maniac import Maniac

maniac = Maniac()

container = maniac.containers.create(
    label="ticket-router",
    initial_model="openai/gpt-4o",
    default_system_prompt=(
        "You are a support ticket router. Given a customer message, "
        "respond with exactly one label: billing, technical, account, or general."
    ),
)
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import Maniac from "maniac-js";

const maniac = new Maniac();

const container = await maniac.containers.create({
  label: "ticket-router",
  initial_model: "openai/gpt-4o",
  default_system_prompt:
    "You are a support ticket router. Given a customer message, " +
    "respond with exactly one label: billing, technical, account, or general.",
});
```

{% endtab %}
{% endtabs %}

***

## Step 2 — Register Inputs Only

Each item only needs an `input` — the `output` field is optional. When omitted, Maniac treats the entry as an input that needs a completion generated.

{% tabs %}
{% tab title="Python" %}

```python
inputs = [
    "I was charged twice for my last order",
    "The app crashes when I try to upload a file",
    "How do I change my email address?",
    "Do you offer student discounts?",
]

maniac.chat.completions.register(
    container="ticket-router",
    items=[
        {
            "input": {
                "messages": [{"role": "user", "content": text}]
            }
        }
        for text in inputs
    ],
)
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
const inputs = [
  "I was charged twice for my last order",
  "The app crashes when I try to upload a file",
  "How do I change my email address?",
  "Do you offer student discounts?",
];

await maniac.chat.completions.register({
  container: "ticket-router",
  items: inputs.map((text) => ({
    input: {
      messages: [{ role: "user", content: text }],
    },
  })),
});
```

{% endtab %}
{% endtabs %}

That's it — no `output` field, no completions to generate yourself.

***

## Uploading Inputs at Scale

If you have a large corpus of representative inputs (e.g. historical support tickets, logged queries, synthetic samples), upload them in batches to avoid timeouts.

{% tabs %}
{% tab title="Python" %}

```python
BATCH_SIZE = 1500

for i in range(0, len(all_inputs), BATCH_SIZE):
    batch = all_inputs[i : i + BATCH_SIZE]

    maniac.chat.completions.register(
        container="ticket-router",
        items=[
            {
                "input": {
                    "messages": [{"role": "user", "content": text}]
                }
            }
            for text in batch
        ],
    )

    print(f"Uploaded {i + len(batch)} / {len(all_inputs)}")
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
const BATCH_SIZE = 1500;

for (let i = 0; i < allInputs.length; i += BATCH_SIZE) {
  const batch = allInputs.slice(i, i + BATCH_SIZE);

  await maniac.chat.completions.register({
    container: "ticket-router",
    items: batch.map((text) => ({
      input: {
        messages: [{ role: "user", content: text }],
      },
    })),
  });

  console.log(`Uploaded ${i + batch.length} / ${allInputs.length}`);
}
```

{% endtab %}
{% endtabs %}

***

## What Happens Next

Once your inputs are registered, add an **Eval** from the **Evals** tab inside your container to define how the agent's outputs should be judged (judge prompt or code eval). From there, Maniac takes over automatically — it generates completions from your base model, builds a training dataset, and optimizes a new model in the background. When a model is ready, it will appear in the **Models** tab inside your container, where you can deploy it so inference requests are routed through it.

{% hint style="info" %}
The more representative your inputs are of real production traffic, the better the resulting model will perform. If you can, sample inputs that cover the full range of scenarios your agent will encounter.
{% endhint %}


# Upload Datasets

Adding pre-existing data to a container.

Maniac lets you direct existing LLM traffic from a different inference provider into a container or upload a static dataset. Once uploaded, these logs can be used for optimization and evaluation.

## Example: Uploading a HuggingFace Dataset

Let's walk through an example of uploading a static dataset using [LEDGAR](https://aclanthology.org/2020.lrec-1.155.pdf) (Tuggener et al. 2020), great for training and testing legal classification models.

#### Prerequisites

```python
export MANIAC_API_KEY=...
```

#### Load the HuggingFace Dataset

```python
from datasets import load_dataset

DATASET = "coastalchp/ledgar"

# Load dataset
dataset = load_dataset(DATASET)
train_split = dataset["train"]

# Extract inputs and labels
clauses = train_split["text"]                  
label_ids = train_split["label"]              
label_names = train_split.features["label"].names
```

#### Define the System Prompt

```python
system_prompt = (
    "You are a legal clause classifier.\n"
    "Given a clause, return exactly one label from this list:\n"
    + "\n".join(f"- {label}" for label in label_names)
    + "\nRespond with only the label name."
)
```

#### Create a container

You can also skip this step and upload a dataset to an existing container, where it will be combined with any existing inference logs.

```python
import requests

response = requests.post(
    f"{BASE_URL}/containers",
    headers=headers,
    json={
        "label": "ledgar-container",
        "initial_model": "openai/gpt-5.2",
        "api": "chat.completions",
        "default_system_prompt": system_prompt,
    },
)

response.raise_for_status()
container = response.json()
```

#### Upload Data in Batches

For large datasets, it's recommended uploading in batches to avoid timeouts. Each dataset entry consists of an input and output in chat completions format, as well as optional metadata.

```python
BATCH_SIZE = 1500
START = 0
MAX_SAMPLES = 60000

end = min(len(clauses), START + MAX_SAMPLES)

for batch_start in range(START, end, BATCH_SIZE):
    batch_end = min(batch_start + BATCH_SIZE, end)
    dataset = []

    for i in range(batch_start, batch_end):
        messages = [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": clauses[i]},
        ]

        dataset.append({
            "input": {"messages": messages},
            "output": {
                "choices": [
                    {
                        "message": {
                            "role": "assistant",
                            "content": label_names[label_ids[i]],
                        }
                    }
                ]
            },
        })

    requests.post(
        f"{BASE_URL}/chat/completions/register",
        headers=headers,
        json={
            "container": "ledgar-container",
            "items": dataset
        },
    )

    print(f"Uploaded samples {batch_start}–{batch_end - 1}")
```

> **Note:** Unlike generating completions inside a container—where the container’s system prompt is automatically applied—**registering (logging) existing completions requires the system prompt to be included explicitly with each messages object**. Registered completions do not inherit the container-level system prompt.


# Using the Datasets Feature

Deriving datasets from your inference logs.

As your container accumulates inference logs, you may want to create smaller training datasets focused on specific subsets of your data. The Datasets feature lets you slice inference logs based on your desired criteria and run optimization on those derived datasets.

1. Navigate the I**nference** tab
2. Add your desired filters
3. Hit **Create Dataset**.

This dataset can then be viewed from the **Datasets** tab and selected within **Optimization**.

{% embed url="<https://youtu.be/aqeU_tNbCPg>" %}


# Authentication

Maniac uses API keys for authentication. This guide covers how to obtain, configure, and manage your API keys securely.

## Getting Your API Key

### 1. Sign Up for Maniac

Visit [maniac.ai](https://maniac.ai) and create an account:

1. Click "Sign Up"
2. Currently, we support sign ins with GitHub and Google.

### 2. Create an API Key

In the Maniac dashboard:

1. Create a new organization and project.
2. Navigate to **Project** → **Settings** → **API Keys**
3. Click **"Create a Key"**
4. Give your key a descriptive name (e.g., "Production API", "Development")
5. Click **"Submit,"** and copy your key.

⚠️ **Important**: API keys are scoped per user and project.

## Configuring Authentication

### Method 1: Environment Variables (Recommended)

Set your API key as an environment variable:

**Linux/macOS:**

```bash
export MANIAC_API_KEY="mk-1234567890abcdef"
```

**Windows:**

```cmd
set MANIAC_API_KEY=mk-1234567890abcdef
```

**Python Code:**

```python
import os
from maniac import Maniac

# Client automatically uses MANIAC_API_KEY environment variable
client = Maniac(api_key=os.getenv("MANIAC_API_KEY"))
```

### Method 2: Configuration File

Create a configuration file at `~/.maniac/config.yaml`:

```yaml
api_key: mk-1234567890abcdef
environment: production
region: us-west-2
```

**Python Code:**

```python
from maniac import Maniac

# Client automatically loads from config file
client = Maniac(api_key=os.getenv("MANIAC_API_KEY"))
```

### Method 3: Direct in Code

```python
from maniac import Maniac

client = Maniac(api_key="MANIAC_API_KEY")
```

⚠️ **Security Warning**: Never hardcode API keys in production code or commit them to version control.

## Security Best Practices

### 1. Environment-Specific Keys

Use different API keys for different environments:

```python
import os
from maniac import Maniac

# Automatically switch based on environment
api_key = os.getenv("MANIAC_API_KEY")
environment = os.getenv("ENVIRONMENT", "development")

client = Maniac(
    api_key=api_key,
    environment=environment
)
```

### 2. Key Rotation

Regularly rotate your API keys:

1. Generate a new API key
2. Update your environment variables/config
3. Test the new key
4. Delete the old key

### 3. Least Privilege Access

Create keys with minimal required permissions:

```yaml
# Example: Read-only key for monitoring
permissions:
  - containers:read
  - metrics:read

# Example: Full access key for deployment
permissions:
  - containers:*
  - models:*
  - data:*
```

### 4. Monitoring Usage

Monitor your API key usage in the dashboard:

* Track request volumes
* Monitor error rates
* Set up usage alerts
* Review access patterns

## Managing Multiple Keys

### Team Environments

For team development, consider:

```python
import os
from maniac import Maniac

# Each team member has their own key
api_key = os.getenv(f"MANIAC_API_KEY_{os.getenv('USER', 'default').upper()}")

client = Maniac(api_key=api_key)
```

## Troubleshooting Authentication

### Common Error Messages

**Invalid API Key**

```json
{
  "error": "invalid_api_key",
  "message": "The provided API key is invalid or has been revoked"
}
```

**Solution**: Check that your API key is correct and hasn't been revoked.

**Permission Denied**

```json
{
  "error": "permission_denied",
  "message": "This API key doesn't have permission for this action"
}
```

**Solution**: Check your key's permissions in the dashboard.

**Rate Limit Exceeded**

```json
{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded. Try again in 60 seconds"
}
```

**Solution**: Implement rate limiting in your code or upgrade your plan.

### Debugging Authentication Issues

Enable debug logging:

```python
import logging
from maniac import Maniac

# Enable debug logging
logging.basicConfig(level=logging.DEBUG)

client = Maniac(api_key=os.getenv("MANIAC_API_KEY"))

# Test authentication
try:
    info = client.get_account_info()
    print(f"Authenticated as: {info['email']}")
except Exception as e:
    print(f"Authentication failed: {e}")
```

## Environment Variables Reference

| Variable             | Description                      | Required |
| -------------------- | -------------------------------- | -------- |
| `MANIAC_API_KEY`     | Your API key                     | Yes      |
| `MANIAC_ENVIRONMENT` | Environment (production/sandbox) | No       |
| `MANIAC_REGION`      | Preferred region                 | No       |
| `MANIAC_TIMEOUT`     | Request timeout (seconds)        | No       |
| `MANIAC_MAX_RETRIES` | Max retry attempts               | No       |

## Next Steps

* [Create your first container](/datasets/quickstart)
* [Explore the Python SDK](broken://pages/ptbbkbjtANQZOc4zN2ld)
* [Set up monitoring](https://github.com/ManiacIncorporated/sb-monorepo/blob/main/docs/gitbook/guides/performance.md)


# Quick Start

Get up and running with Maniac in under 5 minutes.

## Prerequisites

* Python 3.9 or higher
* Maniac API key (all model providers handled automatically)

## Installation

Install the Maniac Python library using pip:

```bash
pip install maniac
```

## Basic Setup

### 1. Import and Initialize

```python
from maniac import Maniac

# Simple initialization - Maniac handles all providers automatically
client = Maniac(api_key="your-maniac-api-key")
```

### 2. Using the Chat Completions API

```python
# Standard chat completions interface
response = client.chat.completions.create(
    fallback="claude-opus-4",
    messages=[
        {"role": "system", "content": "You are a helpful math tutor."},
        {"role": "user", "content": "A train travels 120 miles in 2 hours. What is its average speed?"}
    ],
    temperature=0.0,
    task_label="math-problems",
    judge_prompt="Compare two math solutions. Is A better than B? Consider: calculation accuracy, clear explanations, educational value."
)

print(response["choices"][0]["message"]["content"])
# Output: "The average speed is 60 miles per hour. This is calculated by dividing distance (120 miles) by time (2 hours): 120 ÷ 2 = 60 mph."
```

### 3. Using the Responses API

```python
# Simplified responses interface
response = client.responses.create(
    fallback="claude-opus-4",
    input="A train travels 120 miles in 2 hours. What is its average speed?",
    instructions="You are a helpful math tutor. Solve the problem step by step.",
    temperature=0.0,
    max_tokens=1024,
    task_label="math-problems",
    judge_prompt="Compare two math solutions. Is A better than B? Consider: calculation accuracy, clear explanations, educational value."
)

print(response["output_text"])
# Output: "The average speed is 60 miles per hour..."
```

## Key Features

### Task Labeling

Group related inferences for optimization and tracking:

```python
# All inferences with the same task_label are grouped together
response1 = client.chat.completions.create(
    model="claude-opus-4",
    messages=[{"role": "user", "content": "Question 1"}],
    task_label="customer-support",
    judge_prompt="""
You are comparing two customer support responses to the same customer inquiry. Is response A better than response B?

Consider these criteria:

HELPFULNESS:
- Does response A address the customer's question more directly than B?
- Does response A provide more actionable next steps or solutions than B?
- Does response A anticipate follow-up questions better than B?

PROFESSIONALISM:
- Does response A use more appropriate tone and language than B?
- Does response A show more empathy and understanding than B?
- Does response A maintain company brand voice better than B?

ACCURACY:
- Is response A's information more factually correct than B's?
- Are response A's policy/procedure references more accurate than B's?

Answer: A is better than B (YES/NO)
"""
)

response2 = client.chat.completions.create(
    model="claude-opus-4", 
    messages=[{"role": "user", "content": "Question 2"}],
    task_label="customer-support",  # Same task label
    judge_prompt="""
You are comparing two customer support responses to the same customer inquiry. Is response A better than response B?

Consider these criteria:

HELPFULNESS:
- Does response A address the customer's question more directly than B?
- Does response A provide more actionable next steps or solutions than B?
- Does response A anticipate follow-up questions better than B?

PROFESSIONALISM:
- Does response A use more appropriate tone and language than B?
- Does response A show more empathy and understanding than B?
- Does response A maintain company brand voice better than B?

ACCURACY:
- Is response A's information more factually correct than B's?
- Are response A's policy/procedure references more accurate than B's?

Answer: A is better than B (YES/NO)
"""
)
```

### Available Models (Provider routing automatic)

* **Claude Models**: `claude-opus-4`, `claude-sonnet-4`, `claude-haiku-3`
* **GPT Models**: `gpt-4o`, `gpt-4-turbo`, `gpt-4`, `gpt-3.5-turbo`, `o1-mini`
* **Gemini Models**: `gemini-pro`, `gemini-1.5-pro`
* **Open Source**: `llama-3.1-70b`, `mixtral-8x7b`, `codestral`

### Batch Processing

```python
from maniac import Maniac

client = Maniac(api_key="your-maniac-api-key")

# Create batch requests - Maniac routes automatically
requests = [
    {
        "fallback": "claude-opus-4",
        "messages": [{"role": "user", "content": "Question 1"}],
        "task_label": "batch-processing",
        "judge_prompt": "Is this response accurate and helpful?"
    },
    {
        "fallback": "claude-opus-4",
        "messages": [{"role": "user", "content": "Question 2"}],
        "task_label": "batch-processing",
        "judge_prompt": "Is this response accurate and helpful?"
    }
]

# Submit batch job - provider routing handled automatically
batch_id = client.submit_batch(requests=requests)

# Check status
status = client.get_batch_status(batch_id)
print(f"Batch state: {status['state']}")

# Get results when complete
if status['state'] == 'completed':
    results = client.get_batch_results(batch_id)
```

## Example: Building a Customer Support Agent

```python
from maniac import Maniac

client = Maniac(api_key="your-maniac-api-key")

def handle_customer_query(query: str):
    response = client.responses.create(
        fallback="claude-opus-4",
        input=query,
        instructions="You are a helpful customer support agent. Be friendly, professional, and provide clear solutions.",
        temperature=0.0,
        max_tokens=1024,
        task_label="customer-support",
        judge_prompt="Compare two customer support responses. Is A better than B? Consider: helpfulness, professionalism, accuracy."
    )
    
    return response["output_text"]

# Use in your application
answer = handle_customer_query("How do I reset my password?")
print(answer)
```

## Troubleshooting

### Common Issues

**API Key Invalid**

```
ManiacAuthError: Invalid API key
```

Solution: Verify your API key in the [dashboard](https://dashboard.maniac.ai)

**Rate Limiting**

```
ManiacRateLimitError: Rate limit exceeded
```

Solution: Implement exponential backoff or upgrade your plan

**Model Not Available**

```
ManiacModelError: Requested model not available
```

Solution: The system will automatically fallback to the next best model

## Support

Need help? We're here for you:

* 📧 Email: <support@maniac.ai>
* 💬 Discord: [Join our community](https://discord.gg/maniac)


# Creating Evaluations

Code and judge evals for your Maniac models.

Evaluations (“evals”) define what Maniac uses to guide optimization.

Maniac supports two types of evaluations:

1. **Judge prompt evaluations**
2. **Code evaluations**

## Judge Prompt Evals

Judge prompt evals compare two candidate outputs—**Response A** and **Response B**—for the same input. Maniac runs these comparisons in a tournament-style setup to determine which model performs better.

In Maniac’s tournament setup:

* **Response A** is produced by the **candidate model being evaluated**
* **Response B** is produced by a **reference source**, such as a frontier LLM or labeled data uploaded into your container.

The judge will returns <mark style="color:green;background-color:green;">`TRUE`</mark> if Response A is at least as good as Response B, and <mark style="color:red;background-color:red;">`FALSE`</mark> otherwise.

For example:

`Is response A at least as good as response B in generating a headline for the provided news snippet? Return either True or False.`

***

## Code Evals

Code-based evals give you full control over how outputs are scored. These evals are written as Python functions and operate on a single sample at a time.

A code eval must:

* Accept a single `item` argument
* Return a dictionary with a numeric `score`
* Use `item["sample"]` and `item["ground_truth"]` as inputs

#### Item Structure

```python
item = {
    "sample": {
        "input":  chat_completion_request,
        "output": chat_completion_response
    },
    "ground_truth": {
        "input":  chat_completion_request,
        "output": chat_completion_response
    }
}
```

#### Dependencies

Code evaluations can depend on any external Python packages you need. Just list them in the `requirements.txt` field when creating the evaluation.

## Examples

### Example: Exact Match

```python
def run_evaluation(item) -> dict:
    pred = item["sample"]["output"]["choices"][0]["message"]["content"].strip()
    gt = item["ground_truth"]["output"]["choices"][0]["message"]["content"].strip()
    return {"score": 1.0 if pred == gt else 0.0}
```

### Example: Multi-Label IuO (Jaccard Similarity)

```python
def run_evaluation(item) -> dict:
    def extract(text):
        return {t.strip().lower() for t in text.split(",") if t.strip()}

    pred = extract(item["sample"]["output"]["choices"][0]["message"]["content"])
    gt = extract(item["ground_truth"]["output"]["choices"][0]["message"]["content"])

    if not gt:
        return {"score": 0.0}

    iou = len(pred & gt) / len(pred | gt)
    return {"score": 1.0 if iou >= 0.8 else 0.0}

```

### Example: JSON Schema Validation

```python
import json

def run_evaluation(item) -> dict:
    text = item["sample"]["output"]["choices"][0]["message"]["content"]

    try:
        obj = json.loads(text)
    except json.JSONDecodeError:
        return {"score": 0.0}

    required_keys = {"title", "summary", "confidence"}
    return {"score": 1.0 if required_keys.issubset(obj.keys()) else 0.0}
```

### Example: Semantic Similarity Evaluation

```python
from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity
import numpy as np

model = SentenceTransformer("all-MiniLM-L6-v2")

def run_evaluation(item) -> dict:
    try:
        pred = item["sample"]["output"]["choices"][0]["message"]["content"]
        gt = item["ground_truth"]["output"]["choices"][0]["message"]["content"]
    except Exception:
        return {"score": 0.0}

    # Encode texts
    embeddings = model.encode([pred, gt], normalize_embeddings=True)
    pred_emb, gt_emb = embeddings

    # Compute cosine similarity
    similarity = float(cosine_similarity(
        pred_emb.reshape(1, -1),
        gt_emb.reshape(1, -1)
    )[0][0])

    # Threshold for pass/fail
    return {"score": 1.0 if similarity >= 0.85 else 0.0}
```


# Supported Models

Base and frontier models supported by Maniac for optimization and evaluation.

<table data-full-width="true"><thead><tr><th width="172.23046875">Provider</th><th width="401.83203125">Model Slug</th><th width="107.0859375">Input/1M</th><th>Output/1M</th><th data-hidden data-type="image">Cover image</th></tr></thead><tbody><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-oss-20b</code></td><td>$0.03</td><td>$0.14</td><td><a href="/files/z7gDsoI65P4vrs4fYX8S">/files/z7gDsoI65P4vrs4fYX8S</a></td></tr><tr><td><img src="/files/9UrsKvDehliFpowcC0Zb" alt="" data-size="line"> Microsoft</td><td><code>unsloth/phi-4</code></td><td>$0.07</td><td>$0.14</td><td><a href="/files/9UrsKvDehliFpowcC0Zb">/files/9UrsKvDehliFpowcC0Zb</a></td></tr><tr><td><img src="/files/hiqqP2bQElu8A718Ju3S" alt="" data-size="line"> Mistral</td><td><code>mistralai/mistral-7b-instruct-v0.3</code></td><td>$0.03</td><td>$0.05</td><td><a href="/files/hiqqP2bQElu8A718Ju3S">/files/hiqqP2bQElu8A718Ju3S</a></td></tr><tr><td><img src="/files/hiqqP2bQElu8A718Ju3S" alt="" data-size="line"> Mistral</td><td><code>mistralai/mistral-7b-v0.3</code></td><td>$0.03</td><td>$0.05</td><td><a href="/files/hiqqP2bQElu8A718Ju3S">/files/hiqqP2bQElu8A718Ju3S</a></td></tr><tr><td><img src="/files/hiqqP2bQElu8A718Ju3S" alt="" data-size="line"> Mistral</td><td><code>mistralai/mistral-small-24b-base-2501</code></td><td>$0.03</td><td>$0.11</td><td><a href="/files/hiqqP2bQElu8A718Ju3S">/files/hiqqP2bQElu8A718Ju3S</a></td></tr><tr><td><img src="/files/hiqqP2bQElu8A718Ju3S" alt="" data-size="line"> Mistral</td><td><code>mistralai/mistral-small-24b-instruct-2501</code></td><td>$0.03</td><td>$0.10</td><td><a href="/files/hiqqP2bQElu8A718Ju3S">/files/hiqqP2bQElu8A718Ju3S</a></td></tr><tr><td><img src="/files/3c02JLEKiDEazWz1FTSR" alt="" data-size="line"> Qwen</td><td><code>qwen/qwen2.5-7b-instruct</code></td><td>$0.03</td><td>$0.10</td><td><a href="/files/3c02JLEKiDEazWz1FTSR">/files/3c02JLEKiDEazWz1FTSR</a></td></tr><tr><td><img src="/files/3c02JLEKiDEazWz1FTSR" alt="" data-size="line"> Qwen</td><td><code>qwen/qwen2.5-14b-instruct</code></td><td>$0.03</td><td>$0.10</td><td><a href="/files/3c02JLEKiDEazWz1FTSR">/files/3c02JLEKiDEazWz1FTSR</a></td></tr><tr><td><img src="/files/ChF3heBAhoeqUqFIq2Yu" alt="" data-size="line"> HuggingFace</td><td><code>huggingfaceh4/zephyr-7b-beta</code></td><td>$0.03</td><td>$0.10</td><td><a href="/files/3c02JLEKiDEazWz1FTSR">/files/3c02JLEKiDEazWz1FTSR</a></td></tr><tr><td><img src="/files/Ufi3JCNhiToKNUCoroGS" alt=""> Meta</td><td><code>meta-llama/meta-llama-3.1-8b-instruct</code></td><td>$0.02</td><td>$0.05</td><td><a href="/files/Ufi3JCNhiToKNUCoroGS">/files/Ufi3JCNhiToKNUCoroGS</a></td></tr><tr><td><img src="/files/K9Lhj5eK1YsB6DOcNX1G" alt="" data-size="line"> Google</td><td><code>google-bert/bert-large-cased</code></td><td>varies</td><td>varies</td><td><a href="/files/K9Lhj5eK1YsB6DOcNX1G">/files/K9Lhj5eK1YsB6DOcNX1G</a></td></tr><tr><td><img src="/files/K9Lhj5eK1YsB6DOcNX1G" alt="" data-size="line"> Google</td><td><code>google-bert/bert-large-uncased-whole-word-masking-finetuned-squad</code></td><td>varies</td><td>varies</td><td><a href="/files/K9Lhj5eK1YsB6DOcNX1G">/files/K9Lhj5eK1YsB6DOcNX1G</a></td></tr><tr><td><img src="/files/K9Lhj5eK1YsB6DOcNX1G" alt="" data-size="line"> Google</td><td><code>google-bert/bert-base-cased-finetuned-mrpc</code></td><td>varies</td><td>varies</td><td><a href="/files/K9Lhj5eK1YsB6DOcNX1G">/files/K9Lhj5eK1YsB6DOcNX1G</a></td></tr><tr><td><img src="/files/K9Lhj5eK1YsB6DOcNX1G" alt="" data-size="line"> Google</td><td><code>google-bert/bert-large-uncased</code></td><td>varies</td><td>varies</td><td><a href="/files/K9Lhj5eK1YsB6DOcNX1G">/files/K9Lhj5eK1YsB6DOcNX1G</a></td></tr></tbody></table>

## Supported Frontier Models

<table data-full-width="true"><thead><tr><th width="171.29296875">Provider</th><th width="387.90234375">Model Slug</th><th width="112.71875">Input/1M</th><th>Output/1M</th></tr></thead><tbody><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-opus-4</code></td><td>$15.00</td><td>$75.00</td></tr><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-opus-4.5</code></td><td>$5.00</td><td>$25.00</td></tr><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-opus-4.1</code></td><td>$15.00</td><td>$75.00</td></tr><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-haiku-4.5</code></td><td>$1.00</td><td>$5.00</td></tr><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-3.7-sonnet</code></td><td>$3.00</td><td>$15.00</td></tr><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-sonnet-4</code></td><td>$3.00</td><td>$15.00</td></tr><tr><td><img src="/files/5n3lMfhzyiTORPLyOQ8F" alt="" data-size="line"> Anthropic</td><td><code>anthropic/claude-sonnet-4.5</code></td><td>$3.00</td><td>$15.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-4.1</code></td><td>$2.00</td><td>$8.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-5.1</code></td><td>$1.25</td><td>$10.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-5-pro</code></td><td>$15.00</td><td>$120.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-5</code></td><td>$1.25</td><td>$10.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-5-codex</code></td><td>$1.25</td><td>$10.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-5.1-codex-mini</code></td><td>$0.25</td><td>$2.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-5-mini</code></td><td>$0.25</td><td>$2.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/codex-mini</code></td><td>$1.50</td><td>$6.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-4o</code></td><td>$2.50</td><td>$10.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/gpt-4o-mini</code></td><td>$0.15</td><td>$0.60</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/o3</code></td><td>$2.00</td><td>$8.00</td></tr><tr><td><img src="/files/LwutycvTfpSexPWgGUOr" alt="" data-size="line"> OpenAI</td><td><code>openai/o4-mini</code></td><td>$1.10</td><td>$4.40</td></tr><tr><td><img src="/files/K9Lhj5eK1YsB6DOcNX1G" alt="" data-size="line"> Google</td><td><code>google/gemini-2.5-pro</code></td><td>$1.25</td><td>$10.00</td></tr><tr><td><img src="/files/K9Lhj5eK1YsB6DOcNX1G" alt="" data-size="line"> Google</td><td><code>google/gemini-2.5-flash</code></td><td>$0.30</td><td>$2.50</td></tr><tr><td><img src="/files/hNrJmLkQkyZbnYS5q3aE" alt="" data-size="line"> xAI</td><td><code>x-ai/grok-4-fast</code></td><td>$0.20</td><td>$0.50</td></tr><tr><td><img src="/files/hNrJmLkQkyZbnYS5q3aE" alt="" data-size="line"> xAI</td><td><code>x-ai/grok-4</code></td><td>$3.00</td><td>$15.00</td></tr></tbody></table>


# Chat

Chat completion endpoints (OpenAI-compatible).

## List chat completions

> List chat completions captured in telemetry, scoped to the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Chat","description":"Chat completion endpoints (OpenAI-compatible)."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ChatListRes":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/ChatResRelaxed-Output"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ChatListRes","description":"OpenAI-style list response for chat completions."},"ChatResRelaxed-Output":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/chat/completions":{"get":{"tags":["Chat"],"summary":"List chat completions","description":"List chat completions captured in telemetry, scoped to the authenticated project.","operationId":"chat_completions_list","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"model","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model"}},{"name":"container","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container"}},{"name":"order","in":"query","required":false,"schema":{"enum":["asc","desc"],"type":"string","default":"desc","title":"Order"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","additionalProperties":true},{"type":"null"}],"title":"Metadata"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatListRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create a chat completion

> Create a chat completion using the specified model.\
> \
> Supports both streaming and non-streaming responses and is compatible with\
> OpenAI's chat completions API. Use a container slug (\`maniac:\<container>\`)\
> or an external slug (e.g. \`openai/gpt-4o\`). \`/\` and \`:\` are treated\
> equivalently on input.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Chat","description":"Chat completion endpoints (OpenAI-compatible)."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ChatReq":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Messages","description":"Conversation messages."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug to use. Supports global slugs and container routes; `/` and `:` are treated equivalently on input."},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Fallback models."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Arbitrary key/value metadata to attach to the request."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","description":"Stream response.","default":false},"stream_options":{"anyOf":[{"$ref":"#/components/schemas/StreamOptions"},{"type":"null"}],"description":"Streaming options (e.g. `include_usage`). Non-inference field: it is not validated against `model.supported_parameters`. Set `include_usage=true` to receive the final usage chunk in the stream."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Optional tags for tracking."},"store":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store","description":"Whether to store the completion in the database.","default":true},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context used to group related requests across containers."}},"additionalProperties":false,"type":"object","required":["messages"],"title":"ManiacChatRequest","description":"OpenAI-compatible chat completion request with Maniac extensions."},"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role","description":"Message role."},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextContentPart"},{"$ref":"#/components/schemas/ImageContentPart"},{"$ref":"#/components/schemas/InputAudioContentPart"},{"$ref":"#/components/schemas/FileContentPart"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/FileContentPart","image_url":"#/components/schemas/ImageContentPart","input_audio":"#/components/schemas/InputAudioContentPart","text":"#/components/schemas/TextContentPart"}}},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or list of content parts)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls (assistant message)."},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Tool call ID (tool messages)."}},"additionalProperties":false,"type":"object","required":["role"],"title":"Message","description":"OpenAI-style chat message."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."},"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"StreamOptions":{"properties":{"include_usage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Usage","description":"Include a final chunk with token usage statistics."}},"type":"object","title":"StreamOptions","description":"Options for streaming responses."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"ChatRes":{"properties":{"id":{"type":"string","title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/ChatResponseChoice-Output"},"type":"array","title":"Choices","description":"Response choices."},"created":{"type":"number","title":"Created","description":"Creation timestamp (unix)."},"model":{"type":"string","title":"Model","description":"Model used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."}},"additionalProperties":false,"type":"object","required":["id","choices","created","model"],"title":"ChatRes"},"ChatResponseChoice-Output":{"properties":{"index":{"type":"number","title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/ChatResponseMessage-Output","description":"Assistant message."},"finish_reason":{"title":"Finish Reason","description":"Reason generation finished.","type":"string","enum":["stop","length","tool_calls","content_filter","error"],"nullable":true},"logprobs":{"anyOf":[{},{"type":"null"}],"title":"Logprobs","description":"Logprobs if requested."}},"additionalProperties":false,"type":"object","required":["index","message"],"title":"ChatResponseChoice","description":"Single choice in a chat completion response."},"ChatResponseMessage-Output":{"properties":{"role":{"type":"string","title":"Role","description":"Message role."},"content":{"anyOf":[{},{"type":"null"}],"title":"Content","description":"Message content."},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal","description":"Refusal text when the model declines to answer."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioResponse"},{"type":"null"}],"description":"Audio output when the assistant returns audio (modalities=['audio'])."},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageContentPart"},"type":"array"},{"type":"null"}],"title":"Images","description":"Generated images (OpenRouter image-output models; modalities=['image'])."}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatResponseMessage","description":"Assistant message in a choice."},"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/chat/completions":{"post":{"tags":["Chat"],"summary":"Create a chat completion","description":"Create a chat completion using the specified model.\n\nSupports both streaming and non-streaming responses and is compatible with\nOpenAI's chat completions API. Use a container slug (`maniac:<container>`)\nor an external slug (e.g. `openai/gpt-4o`). `/` and `:` are treated\nequivalently on input.","operationId":"chat_completions_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatReq"}}}},"responses":{"200":{"description":"Server-Sent Events stream for streaming responses.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatRes"}},"text/event-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get a chat completion

> Fetch a single chat completion by id within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Chat","description":"Chat completion endpoints (OpenAI-compatible)."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ChatResRelaxed-Output":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/chat/completions/{completion_id}":{"get":{"tags":["Chat"],"summary":"Get a chat completion","description":"Fetch a single chat completion by id within the authenticated project.","operationId":"chat_completions_retrieve","parameters":[{"name":"completion_id","in":"path","required":true,"schema":{"type":"string","title":"Completion Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChatResRelaxed-Output"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Register chat completion examples

> Register completed chat examples for evaluation and analytics.\
> \
> This endpoint accepts input/output pairs and stores them for later analysis,\
> while aggregating usage metrics for reporting.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Chat","description":"Chat completion endpoints (OpenAI-compatible)."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"RegisterReq":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Item"},"type":"array","title":"Items","description":"List of chat input/output examples."},"container":{"type":"string","title":"Container","description":"Container label to associate these examples with."}},"additionalProperties":false,"type":"object","required":["items","container"],"title":"RegisterChatCompletionsRequest","description":"Register completed chat examples for evaluation or analytics."},"Item":{"properties":{"input":{"$ref":"#/components/schemas/ChatReq"},"output":{"anyOf":[{"$ref":"#/components/schemas/ChatResRelaxed-Input"},{"type":"null"}],"description":"Chat completion output. Omit to register input-only examples."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional tags for this example."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata for this example."}},"additionalProperties":false,"type":"object","required":["input"],"title":"Item"},"ChatReq":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Messages","description":"Conversation messages."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug to use. Supports global slugs and container routes; `/` and `:` are treated equivalently on input."},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Fallback models."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Arbitrary key/value metadata to attach to the request."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","description":"Stream response.","default":false},"stream_options":{"anyOf":[{"$ref":"#/components/schemas/StreamOptions"},{"type":"null"}],"description":"Streaming options (e.g. `include_usage`). Non-inference field: it is not validated against `model.supported_parameters`. Set `include_usage=true` to receive the final usage chunk in the stream."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Optional tags for tracking."},"store":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store","description":"Whether to store the completion in the database.","default":true},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context used to group related requests across containers."}},"additionalProperties":false,"type":"object","required":["messages"],"title":"ManiacChatRequest","description":"OpenAI-compatible chat completion request with Maniac extensions."},"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role","description":"Message role."},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextContentPart"},{"$ref":"#/components/schemas/ImageContentPart"},{"$ref":"#/components/schemas/InputAudioContentPart"},{"$ref":"#/components/schemas/FileContentPart"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/FileContentPart","image_url":"#/components/schemas/ImageContentPart","input_audio":"#/components/schemas/InputAudioContentPart","text":"#/components/schemas/TextContentPart"}}},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or list of content parts)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls (assistant message)."},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Tool call ID (tool messages)."}},"additionalProperties":false,"type":"object","required":["role"],"title":"Message","description":"OpenAI-style chat message."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."},"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"StreamOptions":{"properties":{"include_usage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Usage","description":"Include a final chunk with token usage statistics."}},"type":"object","title":"StreamOptions","description":"Options for streaming responses."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"ChatResRelaxed-Input":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"RegisterRes":{"properties":{"ok":{"type":"boolean","title":"Ok","description":"Whether the register operation succeeded."},"container":{"type":"string","title":"Container","description":"Container label used for registration."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Summary of inserted and skipped items."},"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Errors","description":"Up to 200 validation or upsert errors."}},"additionalProperties":false,"type":"object","required":["ok","container","summary","errors"],"title":"RegisterChatCompletionsResponse"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/chat/completions/register":{"post":{"tags":["Chat"],"summary":"Register chat completion examples","description":"Register completed chat examples for evaluation and analytics.\n\nThis endpoint accepts input/output pairs and stores them for later analysis,\nwhile aggregating usage metrics for reporting.","operationId":"chat_completions_register","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterReq"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# RLM

Recursive Language Model endpoints.

## Create an RLM response

> OpenAI Responses-style endpoint for Recursive Language Model execution. Accepts a strict subset of the Responses request shape and proxies to the internal RLM backend.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"RLM","description":"Recursive Language Model endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"RLMResponsesResponse":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"response","title":"Object","default":"response"},"created_at":{"type":"integer","title":"Created At"},"status":{"type":"string","enum":["in_progress","completed","failed"],"title":"Status"},"model":{"type":"string","title":"Model"},"store":{"type":"boolean","const":false,"title":"Store","default":false},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"},"output":{"anyOf":[{"items":{"$ref":"#/components/schemas/RLMResponsesOutputMessage"},"type":"array"},{"type":"null"}],"title":"Output"},"output_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Text"},"usage":{"anyOf":[{"$ref":"#/components/schemas/RLMResponsesUsage"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/RLMResponsesError"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","created_at","status","model"],"title":"RLMResponsesResponse"},"RLMResponsesOutputMessage":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"message","title":"Type","default":"message"},"status":{"type":"string","const":"completed","title":"Status","default":"completed"},"role":{"type":"string","const":"assistant","title":"Role","default":"assistant"},"content":{"items":{"$ref":"#/components/schemas/RLMResponsesOutputText"},"type":"array","title":"Content"}},"additionalProperties":false,"type":"object","required":["id","content"],"title":"RLMResponsesOutputMessage"},"RLMResponsesOutputText":{"properties":{"type":{"type":"string","const":"output_text","title":"Type","default":"output_text"},"text":{"type":"string","title":"Text"},"annotations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Annotations"}},"additionalProperties":false,"type":"object","required":["text"],"title":"RLMResponsesOutputText"},"RLMResponsesUsage":{"properties":{"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"}},"additionalProperties":false,"type":"object","required":["input_tokens","output_tokens","total_tokens"],"title":"RLMResponsesUsage"},"RLMResponsesError":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"RLMResponsesError"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."}}},"paths":{"/v1/rlm/responses":{"post":{"tags":["RLM"],"summary":"Create an RLM response","description":"OpenAI Responses-style endpoint for Recursive Language Model execution. Accepts a strict subset of the Responses request shape and proxies to the internal RLM backend.","operationId":"rlm_responses_create","requestBody":{"content":{"application/json":{"schema":{"$defs":{"RLMControls":{"properties":{"engine":{"title":"Engine","description":"Execution engine to use. `classic` runs the iterative Maniac RLM, while `lambda` runs the deterministic lambda-style executor.","type":"string","enum":["classic","lambda"],"nullable":true},"max_depth":{"anyOf":[{"type":"integer","maximum":24,"minimum":1},{"type":"null"}],"title":"Max Depth","description":"Maximum recursion depth for the backend RLM worker. For `lambda`, this caps the planned decomposition depth."},"max_iterations":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"title":"Max Iterations","description":"Maximum REPL iterations per recursion level. Used by `classic`."},"max_budget":{"anyOf":[{"type":"number","maximum":100,"minimum":0.01},{"type":"null"}],"title":"Max Budget","description":"Hard budget cap in USD."},"max_timeout":{"anyOf":[{"type":"number","maximum":1800,"minimum":10},{"type":"null"}],"title":"Max Timeout","description":"Hard timeout in seconds."},"enabled_tools":{"anyOf":[{"items":{"type":"string","enum":["browser_read_page","web_search"]},"type":"array"},{"type":"null"}],"title":"Enabled Tools","description":"Optional server-defined RLM tools to expose during execution, such as 'web_search' or 'browser_read_page'. For `classic`, omitting this field enables the backend defaults. For `lambda`, tools are opt-in and must be listed explicitly."},"tool_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Tool Config","description":"Optional per-tool configuration forwarded to the backend RLM API. When `engine` is `lambda`, this requires explicit `enabled_tools`."}},"additionalProperties":false,"type":"object","title":"RLMControls"},"RLMResponsesInputMessage":{"properties":{"type":{"type":"string","const":"message","title":"Type","default":"message"},"role":{"type":"string","enum":["user","assistant","system","developer"],"title":"Role","description":"Supported message role."},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/$defs/RLMResponsesInputText"},"type":"array"}],"title":"Content","description":"Text-only Responses message content."}},"additionalProperties":false,"type":"object","required":["role","content"],"title":"RLMResponsesInputMessage"},"RLMResponsesInputText":{"properties":{"type":{"type":"string","const":"input_text","title":"Type","default":"input_text"},"text":{"type":"string","title":"Text","description":"Text content for a Responses input part."}},"additionalProperties":false,"type":"object","required":["text"],"title":"RLMResponsesInputText"},"RLMResponsesReasoning":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort forwarded to the backend RLM API.","type":"string","enum":["low","medium","high"],"nullable":true}},"additionalProperties":false,"type":"object","title":"RLMResponsesReasoning"}},"properties":{"model":{"type":"string","title":"Model","description":"Model slug to run through the RLM backend."},"input":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/$defs/RLMResponsesInputMessage"},"type":"array"}],"title":"Input","description":"String input or a text-only array of Responses message items."},"instructions":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Instructions","description":"Optional top-level instructions mapped to the backend root prompt."},"background":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Background","description":"When true, start the RLM run in the background and return an in-progress response resource that can be retrieved later.","default":false},"reasoning":{"anyOf":[{"$ref":"#/$defs/RLMResponsesReasoning"},{"type":"null"}],"description":"Optional reasoning controls."},"metadata":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata echoed in the gateway response."},"store":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store","description":"Must be false or omitted. Stateful Responses storage is not supported."},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","description":"Must be false or omitted. Streaming is not supported for this route."},"rlm":{"anyOf":[{"$ref":"#/$defs/RLMControls"},{"type":"null"}],"description":"RLM-specific execution controls."}},"additionalProperties":false,"type":"object","required":["model","input"],"title":"RLMResponsesCreateRequest","description":"Strict OpenAI Responses-style request supported by the RLM gateway endpoint."}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RLMResponsesResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get an RLM response

> Retrieve a background RLM response resource by id within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"RLM","description":"Recursive Language Model endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"RLMResponsesResponse":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"response","title":"Object","default":"response"},"created_at":{"type":"integer","title":"Created At"},"status":{"type":"string","enum":["in_progress","completed","failed"],"title":"Status"},"model":{"type":"string","title":"Model"},"store":{"type":"boolean","const":false,"title":"Store","default":false},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"},"output":{"anyOf":[{"items":{"$ref":"#/components/schemas/RLMResponsesOutputMessage"},"type":"array"},{"type":"null"}],"title":"Output"},"output_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Text"},"usage":{"anyOf":[{"$ref":"#/components/schemas/RLMResponsesUsage"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/RLMResponsesError"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","created_at","status","model"],"title":"RLMResponsesResponse"},"RLMResponsesOutputMessage":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"message","title":"Type","default":"message"},"status":{"type":"string","const":"completed","title":"Status","default":"completed"},"role":{"type":"string","const":"assistant","title":"Role","default":"assistant"},"content":{"items":{"$ref":"#/components/schemas/RLMResponsesOutputText"},"type":"array","title":"Content"}},"additionalProperties":false,"type":"object","required":["id","content"],"title":"RLMResponsesOutputMessage"},"RLMResponsesOutputText":{"properties":{"type":{"type":"string","const":"output_text","title":"Type","default":"output_text"},"text":{"type":"string","title":"Text"},"annotations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Annotations"}},"additionalProperties":false,"type":"object","required":["text"],"title":"RLMResponsesOutputText"},"RLMResponsesUsage":{"properties":{"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"}},"additionalProperties":false,"type":"object","required":["input_tokens","output_tokens","total_tokens"],"title":"RLMResponsesUsage"},"RLMResponsesError":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"RLMResponsesError"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/rlm/responses/{response_id}":{"get":{"tags":["RLM"],"summary":"Get an RLM response","description":"Retrieve a background RLM response resource by id within the authenticated project.","operationId":"rlm_responses_retrieve","parameters":[{"name":"response_id","in":"path","required":true,"schema":{"type":"string","title":"Response Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RLMResponsesResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Traces

Trace lookup endpoints.

## List traces

> List traces within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Traces","description":"Trace lookup endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"TraceListRes":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/TraceListItem"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"TraceListRes","description":"List response for project-scoped traces."},"TraceListItem":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier (`trace.id`)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first request recorded for this trace."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent request recorded for this trace."},"request_count":{"type":"integer","minimum":0,"title":"Request Count","description":"Number of inference log rows recorded for this trace."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this trace."},"spend":{"type":"integer","minimum":0,"title":"Spend","description":"Total spend across all requests in this trace."},"success_count":{"type":"integer","minimum":0,"title":"Success Count","description":"Number of successful requests recorded for this trace."},"error_count":{"type":"integer","minimum":0,"title":"Error Count","description":"Number of errored requests recorded for this trace."}},"additionalProperties":false,"type":"object","required":["id","request_count","container_count","spend","success_count","error_count"],"title":"TraceListItem"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/traces":{"get":{"tags":["Traces"],"summary":"List traces","description":"List traces within the authenticated project.","operationId":"traces_list","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceListRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get a trace

> Fetch a single trace by external trace id (\`trace.id\`) within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Traces","description":"Trace lookup endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"TraceRes":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier (`trace.id`)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source."},"trace_context":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Most recent normalized trace context stored for this trace."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first request recorded for this trace."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent request recorded for this trace."},"request_count":{"type":"integer","minimum":0,"title":"Request Count","description":"Number of inference log rows recorded for this trace."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this trace."},"error_count":{"type":"integer","minimum":0,"title":"Error Count","description":"Number of errored requests recorded for this trace."},"spans":{"items":{"$ref":"#/components/schemas/TraceSpanRes"},"type":"array","title":"Spans","description":"Grouped spans for this trace."}},"additionalProperties":false,"type":"object","required":["id","request_count","container_count","error_count"],"title":"Trace"},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"TraceSpanRes":{"properties":{"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Logical span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first attempt recorded for this span."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent attempt recorded for this span."},"attempt_count":{"type":"integer","minimum":0,"title":"Attempt Count","description":"Number of attempts recorded for this logical span."},"inference_log_ids":{"items":{"type":"string"},"type":"array","title":"Inference Log Ids","description":"Chronological list of inference log ids (`task_inference_logs.id`) for this span."},"latest_inference_log_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Inference Log Id","description":"Inference log id for the most recent attempt."},"latest_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Status","description":"Status for the most recent attempt."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this span."}},"additionalProperties":false,"type":"object","required":["attempt_count","container_count"],"title":"TraceSpan"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/traces/{id}":{"get":{"tags":["Traces"],"summary":"Get a trace","description":"Fetch a single trace by external trace id (`trace.id`) within the authenticated project.","operationId":"traces_retrieve","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","title":"Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TraceRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Containers

Container management endpoints.

## List containers

> List containers owned by the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Containers","description":"Container management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ContainerListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Container-Output"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ContainerListResponse"},"Container-Output":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"best_model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Model Id","description":"Best model id."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","project_id","label"],"title":"Container"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/containers":{"get":{"tags":["Containers"],"summary":"List containers","description":"List containers owned by the authenticated project.","operationId":"containers_list","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerListResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create a container

> Create a new container. Containers represent one task in your codebase. Each container utilizes separate models, routing, and evaluations, and collects data separately.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Containers","description":"Container management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"CreateContainerReq":{"properties":{"label":{"type":"string","title":"Label","description":"Container label."},"initial_model":{"type":"string","title":"Initial Model","description":"Initial model slug."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Default inference parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."}},"type":"object","required":["label","initial_model"],"title":"CreateContainerReq"},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"CreateContainerRes":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","label"],"title":"CreateContainerRes"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/containers":{"post":{"tags":["Containers"],"summary":"Create a container","description":"Create a new container. Containers represent one task in your codebase. Each container utilizes separate models, routing, and evaluations, and collects data separately.","operationId":"containers_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerReq"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get a container

> Fetch a single container by label within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Containers","description":"Container management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"CreateContainerRes":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","label"],"title":"CreateContainerRes"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/containers/{label}":{"get":{"tags":["Containers"],"summary":"Get a container","description":"Fetch a single container by label within the authenticated project.","operationId":"containers_retrieve","parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Delete a container

> Soft-delete a container by label within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Containers","description":"Container management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"DeleteContainerRes":{"properties":{"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"label":{"type":"string","title":"Label","description":"Container label."},"deleted":{"type":"boolean","const":true,"title":"Deleted","description":"Deletion status.","default":true}},"additionalProperties":false,"type":"object","required":["label"],"title":"DeleteContainerRes"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/containers/{label}":{"delete":{"tags":["Containers"],"summary":"Delete a container","description":"Soft-delete a container by label within the authenticated project.","operationId":"containers_delete","parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteContainerRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Update a container

> Update container defaults by label within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Containers","description":"Container management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"UpdateContainerReq":{"properties":{"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Updated default parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Updated system prompt."},"default_model":{"anyOf":[{"type":"string","minLength":1,"description":"Resource id or label"},{"type":"null"}],"title":"Default Model","description":"Updated default model id or slug."}},"additionalProperties":false,"type":"object","title":"UpdateContainerReq","description":"Patchable fields for a container."},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"CreateContainerRes":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","label"],"title":"CreateContainerRes"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/containers/{label}":{"patch":{"tags":["Containers"],"summary":"Update a container","description":"Update container defaults by label within the authenticated project.","operationId":"containers_update","parameters":[{"name":"label","in":"path","required":true,"schema":{"type":"string","title":"Label"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContainerReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContainerRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Add a model to a container

> Attach a model to a container as a submodel with optional defaults.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Containers","description":"Container management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"AddModelToContainerReq":{"properties":{"model":{"type":"string","title":"Model","description":"Model slug or id to add."},"container":{"type":"string","title":"Container","description":"Container id or label."},"slug":{"type":"string","title":"Slug","description":"User specified submodel slug."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Default inference parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."}},"type":"object","required":["model","container","slug"],"title":"AddModelToContainerReq"},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"AddModelToContainerRes":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Object type.","default":"model"},"id":{"type":"string","title":"Id","description":"Model id."},"container_id":{"type":"string","title":"Container Id","description":"Container id."},"slug":{"type":"string","title":"Slug","description":"Submodel slug."},"container":{"type":"string","title":"Container","description":"Container label."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."}},"type":"object","required":["id","container_id","slug","container"],"title":"AddModelToContainerRes"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/models":{"post":{"tags":["Containers"],"summary":"Add a model to a container","description":"Attach a model to a container as a submodel with optional defaults.","operationId":"containers_models_add","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddModelToContainerReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddModelToContainerRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Files

File upload and management endpoints.

## List files (OpenAI-compatible)

> List files owned by the authenticated project, optionally filtered by purpose.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Files","description":"File upload and management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"FileListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/FileObject"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"FileListResponse","description":"OpenAI-compatible list response for files."},"FileObject":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"bytes":{"type":"integer","minimum":0,"title":"Bytes","description":"File size in bytes."},"created_at":{"type":"integer","minimum":0,"title":"Created At","description":"Unix timestamp (seconds)."},"filename":{"type":"string","title":"Filename","description":"Original filename."},"purpose":{"type":"string","title":"Purpose","description":"Intended file purpose."},"status":{"type":"string","title":"Status","description":"Current file status."},"status_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Details","description":"Optional status details."}},"additionalProperties":false,"type":"object","required":["id","bytes","created_at","filename","purpose","status"],"title":"FileObject","description":"OpenAI-compatible file object (subset).\n\nWe keep `id` as the DB UUID string, and expose the OpenAI-ish envelope."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/files":{"get":{"tags":["Files"],"summary":"List files (OpenAI-compatible)","description":"List files owned by the authenticated project, optionally filtered by purpose.","operationId":"files_list","parameters":[{"name":"purpose","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by purpose","title":"Purpose"},"description":"Filter by purpose"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"description":"Max number of files.","default":100,"title":"Limit"},"description":"Max number of files."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of files to skip.","default":0,"title":"Offset"},"description":"Number of files to skip."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileListResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Upload a file

> Upload a file to the platform. This endpoint accepts a file and a purpose, and uploads the file to the platform, for later use in training or evaluation.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Files","description":"File upload and management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"Body_files_create":{"properties":{"purpose":{"type":"string","title":"Purpose"},"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["purpose","file"],"title":"Body_files_create"},"FileObject":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"bytes":{"type":"integer","minimum":0,"title":"Bytes","description":"File size in bytes."},"created_at":{"type":"integer","minimum":0,"title":"Created At","description":"Unix timestamp (seconds)."},"filename":{"type":"string","title":"Filename","description":"Original filename."},"purpose":{"type":"string","title":"Purpose","description":"Intended file purpose."},"status":{"type":"string","title":"Status","description":"Current file status."},"status_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Details","description":"Optional status details."}},"additionalProperties":false,"type":"object","required":["id","bytes","created_at","filename","purpose","status"],"title":"FileObject","description":"OpenAI-compatible file object (subset).\n\nWe keep `id` as the DB UUID string, and expose the OpenAI-ish envelope."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/files":{"post":{"tags":["Files"],"summary":"Upload a file","description":"Upload a file to the platform. This endpoint accepts a file and a purpose, and uploads the file to the platform, for later use in training or evaluation.","operationId":"files_create","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_files_create"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileObject"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Retrieve file metadata&#x20;

> Fetch metadata for a single file by id within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Files","description":"File upload and management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"FileObject":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"bytes":{"type":"integer","minimum":0,"title":"Bytes","description":"File size in bytes."},"created_at":{"type":"integer","minimum":0,"title":"Created At","description":"Unix timestamp (seconds)."},"filename":{"type":"string","title":"Filename","description":"Original filename."},"purpose":{"type":"string","title":"Purpose","description":"Intended file purpose."},"status":{"type":"string","title":"Status","description":"Current file status."},"status_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Details","description":"Optional status details."}},"additionalProperties":false,"type":"object","required":["id","bytes","created_at","filename","purpose","status"],"title":"FileObject","description":"OpenAI-compatible file object (subset).\n\nWe keep `id` as the DB UUID string, and expose the OpenAI-ish envelope."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/files/{file_id}":{"get":{"tags":["Files"],"summary":"Retrieve file metadata ","description":"Fetch metadata for a single file by id within the authenticated project.","operationId":"files_retrieve","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"File id (UUID)","title":"File Id"},"description":"File id (UUID)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileObject"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Delete a file (OpenAI-compatible)

> Soft-delete a file by id within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Files","description":"File upload and management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"FileDeleteResponse":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"deleted":{"type":"boolean","title":"Deleted","description":"Deletion status.","default":true}},"additionalProperties":false,"type":"object","required":["id"],"title":"FileDeleteResponse","description":"OpenAI-compatible delete response."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/files/{file_id}":{"delete":{"tags":["Files"],"summary":"Delete a file (OpenAI-compatible)","description":"Soft-delete a file by id within the authenticated project.","operationId":"files_delete","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"File id (UUID)","title":"File Id"},"description":"File id (UUID)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileDeleteResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Retrieve file content (OpenAI-compatible)

> Download the raw contents of a file by id within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Files","description":"File upload and management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/files/{file_id}/content":{"get":{"tags":["Files"],"summary":"Retrieve file content (OpenAI-compatible)","description":"Download the raw contents of a file by id within the authenticated project.","operationId":"files_content","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"File id (UUID)","title":"File Id"},"description":"File id (UUID)"}],"responses":{"200":{"description":"Raw file bytes","content":{"application/json":{"schema":{}},"application/octet-stream":{"schema":{"type":"string","format":"binary"}},"application/jsonl":{"schema":{"type":"string","format":"binary"}},"text/plain":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Models

Model listing and metadata endpoints.

## List available models

> List models available to the authenticated project. When filtered by container, returns attached container models and may also include the container's effective default model if that default is globally scoped.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Models","description":"Model listing and metadata endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ModelListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/ModelListItem"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ModelListResponse"},"ModelListItem":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Object type.","default":"model"},"id":{"type":"string","title":"Id","description":"Model id."},"slug":{"type":"string","title":"Slug","description":"Model slug."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Unix timestamp of when the model was added."},"context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Length","description":"Maximum context length in tokens."},"pricing":{"$ref":"#/components/schemas/Pricing","description":"Pricing information."},"supported_parameters":{"items":{"type":"string"},"type":"array","title":"Supported Parameters","description":"Supported inference parameters."},"supported_apis":{"items":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"]},"type":"array","title":"Supported Apis","description":"Supported APIs."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Model provider."},"desktop_picker_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Desktop Picker Rank","description":"Optional rank for desktop picker recommendations; lower values sort first."}},"type":"object","required":["id","slug","pricing","supported_parameters","supported_apis"],"title":"ModelListItem"},"Pricing":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Price per prompt token or unit."},"completion":{"type":"string","title":"Completion","description":"Price per completion token or unit."},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Price per image input."},"request":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request","description":"Price per request."},"discount":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount","description":"Discount rate."},"web_search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Search","description":"Price per web search call."},"image_output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Output","description":"Price per image output."},"input_cache_read":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Cache Read","description":"Price per cache read."},"internal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Reasoning","description":"Price for internal reasoning tokens."}},"additionalProperties":true,"type":"object","required":["prompt","completion"],"title":"Pricing"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/models":{"get":{"tags":["Models"],"summary":"List available models","description":"List models available to the authenticated project. When filtered by container, returns attached container models and may also include the container's effective default model if that default is globally scoped.","operationId":"models_list","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Max number of models.","default":500,"title":"Limit"},"description":"Max number of models."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of models to skip.","default":0,"title":"Offset"},"description":"Number of models to skip."},{"name":"container","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Container ID or label to filter models by. Container-scoped results include attached models and may also include the effective default model when it is globally scoped.","title":"Container"},"description":"Container ID or label to filter models by. Container-scoped results include attached models and may also include the effective default model when it is globally scoped."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelListResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Evaluation

Evaluation and evaluator endpoints.

## List evaluators

> List evaluators for the authenticated project, optionally filtered by container.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluatorListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"anyOf":[{"$ref":"#/components/schemas/JudgeEvaluator"},{"$ref":"#/components/schemas/CodeEvaluator"}]},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"EvaluatorListResponse"},"JudgeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.judge","title":"Object","description":"Object type.","default":"evaluator.judge"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"model":{"type":"string","title":"Model","description":"Judge model slug."},"prompt":{"type":"string","title":"Prompt","description":"Judge prompt."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for the judge model (e.g. response_format, temperature)."}},"type":"object","required":["project_id","id","name","created_at","model","prompt"],"title":"JudgeEvaluator"},"CodeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.code","title":"Object","description":"Object type.","default":"evaluator.code"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"source":{"type":"string","title":"Source","description":"Source code to evaluate."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional list of package requirements."}},"type":"object","required":["project_id","id","name","created_at","source"],"title":"CodeEvaluator"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluators":{"get":{"tags":["Evaluation"],"summary":"List evaluators","description":"List evaluators for the authenticated project, optionally filtered by container.","operationId":"evaluators_list","parameters":[{"name":"container","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluatorListResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create an evaluator

> Create a new evaluator scoped to a project or container.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluatorReq":{"properties":{"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label."},"type":{"type":"string","enum":["judge","code"],"title":"Type","description":"Evaluator type."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Judge model slug."},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Judge prompt."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Code evaluator source."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional requirements list."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode.","default":"pointwise"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for judge evaluators (e.g. response_format, temperature)."}},"additionalProperties":false,"type":"object","required":["type"],"title":"EvaluatorReq"},"JudgeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.judge","title":"Object","description":"Object type.","default":"evaluator.judge"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"model":{"type":"string","title":"Model","description":"Judge model slug."},"prompt":{"type":"string","title":"Prompt","description":"Judge prompt."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for the judge model (e.g. response_format, temperature)."}},"type":"object","required":["project_id","id","name","created_at","model","prompt"],"title":"JudgeEvaluator"},"CodeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.code","title":"Object","description":"Object type.","default":"evaluator.code"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"source":{"type":"string","title":"Source","description":"Source code to evaluate."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional list of package requirements."}},"type":"object","required":["project_id","id","name","created_at","source"],"title":"CodeEvaluator"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluators":{"post":{"tags":["Evaluation"],"summary":"Create an evaluator","description":"Create a new evaluator scoped to a project or container.","operationId":"evaluators_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluatorReq"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/JudgeEvaluator"},{"$ref":"#/components/schemas/CodeEvaluator"}],"title":"Response Evaluators Create"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get an evaluator

> Fetch a single evaluator by id or name within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"JudgeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.judge","title":"Object","description":"Object type.","default":"evaluator.judge"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"model":{"type":"string","title":"Model","description":"Judge model slug."},"prompt":{"type":"string","title":"Prompt","description":"Judge prompt."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for the judge model (e.g. response_format, temperature)."}},"type":"object","required":["project_id","id","name","created_at","model","prompt"],"title":"JudgeEvaluator"},"CodeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.code","title":"Object","description":"Object type.","default":"evaluator.code"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"source":{"type":"string","title":"Source","description":"Source code to evaluate."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional list of package requirements."}},"type":"object","required":["project_id","id","name","created_at","source"],"title":"CodeEvaluator"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluators/{evaluator}":{"get":{"tags":["Evaluation"],"summary":"Get an evaluator","description":"Fetch a single evaluator by id or name within the authenticated project.","operationId":"evaluators_retrieve","parameters":[{"name":"evaluator","in":"path","required":true,"schema":{"type":"string","title":"Evaluator"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/JudgeEvaluator"},{"$ref":"#/components/schemas/CodeEvaluator"}],"title":"Response Evaluators Retrieve"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Update an evaluator

> Update an existing evaluator by id or name.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"UpdateEvaluatorReq":{"properties":{"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Judge model slug."},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Judge prompt."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Code evaluator source."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional requirements list."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"title":"Mode","description":"Evaluation mode.","type":"string","enum":["pointwise","reference","pairwise"],"nullable":true},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for judge evaluators (e.g. response_format, temperature)."}},"additionalProperties":false,"type":"object","title":"UpdateEvaluatorReq","description":"Patchable fields for an evaluator."},"JudgeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.judge","title":"Object","description":"Object type.","default":"evaluator.judge"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"model":{"type":"string","title":"Model","description":"Judge model slug."},"prompt":{"type":"string","title":"Prompt","description":"Judge prompt."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for the judge model (e.g. response_format, temperature)."}},"type":"object","required":["project_id","id","name","created_at","model","prompt"],"title":"JudgeEvaluator"},"CodeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.code","title":"Object","description":"Object type.","default":"evaluator.code"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"source":{"type":"string","title":"Source","description":"Source code to evaluate."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional list of package requirements."}},"type":"object","required":["project_id","id","name","created_at","source"],"title":"CodeEvaluator"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluators/{evaluator}":{"patch":{"tags":["Evaluation"],"summary":"Update an evaluator","description":"Update an existing evaluator by id or name.","operationId":"evaluators_update","parameters":[{"name":"evaluator","in":"path","required":true,"schema":{"type":"string","title":"Evaluator"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEvaluatorReq"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/JudgeEvaluator"},{"$ref":"#/components/schemas/CodeEvaluator"}],"title":"Response Evaluators Update"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Delete an evaluator

> Delete an evaluator by id.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"DeleteEvaluatorRes":{"properties":{"object":{"type":"string","const":"evaluator","title":"Object","description":"Object type.","default":"evaluator"},"id":{"type":"string","title":"Id","description":"Evaluator id."},"deleted":{"type":"boolean","const":true,"title":"Deleted","description":"Deletion status.","default":true}},"additionalProperties":false,"type":"object","required":["id"],"title":"DeleteEvaluatorRes"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluators/{evaluator_id}":{"delete":{"tags":["Evaluation"],"summary":"Delete an evaluator","description":"Delete an evaluator by id.","operationId":"evaluators_delete","parameters":[{"name":"evaluator_id","in":"path","required":true,"schema":{"type":"string","title":"Evaluator Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteEvaluatorRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## List evaluation runs

> List evaluation runs for the authenticated project. Optionally filter by container and status.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluationRunListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/EvaluationRun"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"EvaluationRunListResponse"},"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluation/runs":{"get":{"tags":["Evaluation"],"summary":"List evaluation runs","description":"List evaluation runs for the authenticated project. Optionally filter by container and status.","operationId":"evaluation_runs_list","parameters":[{"name":"container","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Container ID or label to filter by.","title":"Container"},"description":"Container ID or label to filter by."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by run status (e.g. 'running', 'completed', 'error').","title":"Status"},"description":"Filter by run status (e.g. 'running', 'completed', 'error')."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRunListResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create an evaluation run

> Launch an evaluation run. Validates access to the specified container, evaluators, data sources, and models, then dispatches the run through the backend gateway interface.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluationRunReq":{"properties":{"container":{"type":"string","title":"Container","description":"Container id or label."},"evaluators":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Evaluators","description":"Evaluator ids or labels."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Sample-side data source. Omit to default to the container's task logs. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with the specified models."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Ground-truth-side data source. Omit to default to the container's task logs. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with a model."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Baseline-side data source for pairwise evaluation. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with a model."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Execution environment name (maps to Modal app suffix).","default":"main"}},"additionalProperties":false,"type":"object","required":["container","evaluators"],"title":"EvaluationRunReq","description":"Request body for creating an evaluation run.\n\nEach side of the evaluation (``sample`` and ``ground_truth``) is described\nby a single data-source object whose ``type`` discriminator determines how\ndata is obtained:\n\n- ``\"dataset\"``   — pull from a dataset.\n- ``\"container\"`` — pull from the container's task logs.\n- ``\"generate\"``  — generate completions using one or more models.\n\nBoth fields are optional, but **at least one must be provided**.  When a\nside is omitted it defaults to the top-level container's task logs.  At\nleast one resolved side must not be ``type='generate'`` so there is seed\ninput to evaluate against."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluation/runs":{"post":{"tags":["Evaluation"],"summary":"Create an evaluation run","description":"Launch an evaluation run. Validates access to the specified container, evaluators, data sources, and models, then dispatches the run through the backend gateway interface.","operationId":"evaluation_runs_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRunReq"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get an evaluation run

> Retrieve a single evaluation run by ID within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluation/runs/{run_id}":{"get":{"tags":["Evaluation"],"summary":"Get an evaluation run","description":"Retrieve a single evaluation run by ID within the authenticated project.","operationId":"evaluation_runs_retrieve","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Datasets

Dataset management endpoints.

## List datasets

> List datasets owned by the authenticated project. Optionally filter by container.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Datasets","description":"Dataset management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"ListResponse_Dataset_":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Dataset"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ListResponse[Dataset]"},"Dataset":{"properties":{"id":{"type":"string","title":"Id","description":"Dataset id."},"object":{"type":"string","const":"dataset","title":"Object","description":"Object type.","default":"dataset"},"name":{"type":"string","title":"Name","description":"Dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Dataset description."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"requested_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Size","description":"Requested dataset size."},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size","description":"Actual dataset size."},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/DatasetFilter"},"type":"array"},{"type":"null"}],"title":"Filters","description":"Filters applied when building the dataset."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional dataset tags."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary metadata."}},"type":"object","required":["id","name"],"title":"Dataset"},"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/datasets":{"get":{"tags":["Datasets"],"summary":"List datasets","description":"List datasets owned by the authenticated project. Optionally filter by container.","operationId":"datasets_list","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Max number of datasets.","default":100,"title":"Limit"},"description":"Max number of datasets."},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"description":"Number of datasets to skip.","default":0,"title":"Offset"},"description":"Number of datasets to skip."},{"name":"container","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Container ID or label to filter datasets by.","title":"Container"},"description":"Container ID or label to filter datasets by."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListResponse_Dataset_"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create a dataset

> Create a dataset for a container using telemetry filters.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Datasets","description":"Dataset management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"CreateDatasetReq":{"properties":{"name":{"type":"string","title":"Name","description":"Dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Dataset description."},"container":{"type":"string","title":"Container","description":"Container id or label for source data."},"size":{"type":"integer","exclusiveMinimum":0,"title":"Size","description":"Requested dataset size."},"filters":{"items":{"$ref":"#/components/schemas/DatasetFilter"},"type":"array","title":"Filters","description":"Filter conditions."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional dataset tags."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary metadata."}},"additionalProperties":false,"type":"object","required":["name","container","size"],"title":"CreateDatasetReq"},"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"},"CreateDatasetRes":{"properties":{"id":{"type":"string","title":"Id","description":"ID of the created dataset."},"message":{"type":"string","title":"Message","description":"Status message."}},"type":"object","required":["id","message"],"title":"CreateDatasetRes"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/datasets":{"post":{"tags":["Datasets"],"summary":"Create a dataset","description":"Create a dataset for a container using telemetry filters.","operationId":"datasets_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatasetReq"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatasetRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get a dataset

> Fetch a dataset by id within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Datasets","description":"Dataset management endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"Dataset":{"properties":{"id":{"type":"string","title":"Id","description":"Dataset id."},"object":{"type":"string","const":"dataset","title":"Object","description":"Object type.","default":"dataset"},"name":{"type":"string","title":"Name","description":"Dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Dataset description."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"requested_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Size","description":"Requested dataset size."},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size","description":"Actual dataset size."},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/DatasetFilter"},"type":"array"},{"type":"null"}],"title":"Filters","description":"Filters applied when building the dataset."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional dataset tags."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary metadata."}},"type":"object","required":["id","name"],"title":"Dataset"},"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/datasets/{dataset_id}":{"get":{"tags":["Datasets"],"summary":"Get a dataset","description":"Fetch a dataset by id within the authenticated project.","operationId":"datasets_retrieve","parameters":[{"name":"dataset_id","in":"path","required":true,"schema":{"type":"string","title":"Dataset Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Optimization

Optimization run endpoints.

## Create an optimization run

> Create a new optimization run for a container using specified base models\
> and evaluation criteria.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Optimization","description":"Optimization run endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"CreateOptimizationRunReq":{"properties":{"container":{"type":"string","minLength":1,"title":"Container","description":"Container id or label."},"base_models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","title":"Base Models","description":"Base model ids or labels."},"evals":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","title":"Evals","description":"Evaluator ids or labels."},"methods":{"items":{"anyOf":[{"$ref":"#/components/schemas/SFTMethod"},{"$ref":"#/components/schemas/GRPOMethod"}]},"type":"array","title":"Methods","description":"Optimization methods to run."},"data_source":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/FileDataSource"},{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","file":"#/components/schemas/FileDataSource"}}},{"type":"null"}],"title":"Data Source","description":"Optional data source override."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Execution environment name.","default":"main"}},"type":"object","required":["container","base_models","evals","methods"],"title":"CreateOptimizationRunReq"},"SFTMethod":{"properties":{"type":{"type":"string","const":"sft","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/SFTHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"SFTMethod"},"SFTHyperparameters":{"properties":{"max_steps":{"type":"integer","title":"Max Steps"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"lora_dim":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Dim"},"lora_alpha":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Alpha"},"per_device_train_batch_size":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Per Device Train Batch Size"},"gradient_accumulation_steps":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Gradient Accumulation Steps"},"warmup_ratio":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Warmup Ratio"},"optim":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Optim"},"weight_decay":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Weight Decay"},"lr_scheduler_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Lr Scheduler Type"},"learning_rate":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Learning Rate"},"seed":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Seed"},"mode":{"anyOf":[{"items":{"type":"string","enum":["autoregression","classification","regression"]},"type":"array"},{"type":"string","enum":["autoregression","classification","regression"]}],"title":"Mode"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":7},"train_range":{"type":"string","title":"Train Range","default":"500:20000"},"eval_range":{"type":"string","title":"Eval Range","default":"0:500"},"top_c":{"type":"integer","title":"Top C","default":10},"filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"},"max_seq_len":{"type":"integer","title":"Max Seq Len","default":2048},"max_gen_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Gen Tokens"},"target_key":{"type":"string","title":"Target Key","default":"relevance"},"classification_labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Classification Labels"}},"additionalProperties":true,"type":"object","required":["max_steps","lora_targets","lora_dim","lora_alpha","per_device_train_batch_size","gradient_accumulation_steps","warmup_ratio","optim","weight_decay","lr_scheduler_type","learning_rate","seed","mode"],"title":"SFTHyperparameters"},"GRPOMethod":{"properties":{"type":{"type":"string","const":"grpo","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/GRPOHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"GRPOMethod"},"GRPOHyperparameters":{"properties":{"lora_alpha":{"items":{"type":"number"},"type":"array","title":"Lora Alpha"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"learning_rate":{"type":"number","title":"Learning Rate"},"batch_size":{"type":"integer","title":"Batch Size"},"max_steps":{"type":"integer","title":"Max Steps"},"seed":{"type":"integer","title":"Seed"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":5}},"type":"object","required":["lora_alpha","lora_targets","learning_rate","batch_size","max_steps","seed"],"title":"GRPOHyperparameters"},"FileDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"file","title":"Type"},"file":{"type":"string","minLength":1,"title":"File","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","file"],"title":"FileDataSource"},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"CreateOptimizationRunRes":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"optimization.run","title":"Object","description":"Object type.","default":"optimization.run"},"id":{"type":"string","title":"Id","description":"Optimization run id."},"container_id":{"type":"string","title":"Container Id","description":"Container id."},"base_models":{"items":{"type":"string"},"type":"array","title":"Base Models","description":"Base model ids."},"methods":{"items":{"anyOf":[{"$ref":"#/components/schemas/SFTMethod"},{"$ref":"#/components/schemas/GRPOMethod"}]},"type":"array","title":"Methods","description":"Optimization methods used."},"dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset","description":"Dataset id."},"evaluators":{"items":{"type":"string"},"type":"array","title":"Evaluators","description":"Evaluator ids."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Optimization metrics."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"best_checkpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Checkpoint","description":"Best checkpoint id."}},"type":"object","required":["created_at","status","id","container_id","base_models","methods","evaluators"],"title":"CreateOptimizationRunRes"},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/optimization/runs":{"post":{"tags":["Optimization"],"summary":"Create an optimization run","description":"Create a new optimization run for a container using specified base models\nand evaluation criteria.","operationId":"create_optimization_run_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOptimizationRunReq"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOptimizationRunRes"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```


# Health

Health and status endpoints.

## Healthz

> Health check endpoint for load balancers and uptime monitors.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Health","description":"Health and status endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[],"paths":{"/healthz":{"get":{"tags":["Health"],"summary":"Healthz","description":"Health check endpoint for load balancers and uptime monitors.","operationId":"healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}}},"components":{"schemas":{"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"}},"additionalProperties":false,"type":"object","required":["ok"],"title":"HealthResponse","description":"Health check response."}}}}
```


# Models

## The AddModelToContainerReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"AddModelToContainerReq":{"properties":{"model":{"type":"string","title":"Model","description":"Model slug or id to add."},"container":{"type":"string","title":"Container","description":"Container id or label."},"slug":{"type":"string","title":"Slug","description":"User specified submodel slug."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Default inference parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."}},"type":"object","required":["model","container","slug"],"title":"AddModelToContainerReq"},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The AddModelToContainerRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"AddModelToContainerRes":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Object type.","default":"model"},"id":{"type":"string","title":"Id","description":"Model id."},"container_id":{"type":"string","title":"Container Id","description":"Container id."},"slug":{"type":"string","title":"Slug","description":"Submodel slug."},"container":{"type":"string","title":"Container","description":"Container label."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."}},"type":"object","required":["id","container_id","slug","container"],"title":"AddModelToContainerRes"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The AudioOutputConfig object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."}}}}
```

## The AudioResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."}}}}
```

## The Body\_files\_create object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Body_files_create":{"properties":{"purpose":{"type":"string","title":"Purpose"},"file":{"type":"string","format":"binary","title":"File"}},"type":"object","required":["purpose","file"],"title":"Body_files_create"}}}}
```

## The ChatListRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatListRes":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/ChatResRelaxed-Output"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ChatListRes","description":"OpenAI-style list response for chat completions."},"ChatResRelaxed-Output":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"}}}}
```

## The ChatReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatReq":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Messages","description":"Conversation messages."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug to use. Supports global slugs and container routes; `/` and `:` are treated equivalently on input."},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Fallback models."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Arbitrary key/value metadata to attach to the request."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","description":"Stream response.","default":false},"stream_options":{"anyOf":[{"$ref":"#/components/schemas/StreamOptions"},{"type":"null"}],"description":"Streaming options (e.g. `include_usage`). Non-inference field: it is not validated against `model.supported_parameters`. Set `include_usage=true` to receive the final usage chunk in the stream."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Optional tags for tracking."},"store":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store","description":"Whether to store the completion in the database.","default":true},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context used to group related requests across containers."}},"additionalProperties":false,"type":"object","required":["messages"],"title":"ManiacChatRequest","description":"OpenAI-compatible chat completion request with Maniac extensions."},"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role","description":"Message role."},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextContentPart"},{"$ref":"#/components/schemas/ImageContentPart"},{"$ref":"#/components/schemas/InputAudioContentPart"},{"$ref":"#/components/schemas/FileContentPart"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/FileContentPart","image_url":"#/components/schemas/ImageContentPart","input_audio":"#/components/schemas/InputAudioContentPart","text":"#/components/schemas/TextContentPart"}}},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or list of content parts)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls (assistant message)."},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Tool call ID (tool messages)."}},"additionalProperties":false,"type":"object","required":["role"],"title":"Message","description":"OpenAI-style chat message."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."},"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"StreamOptions":{"properties":{"include_usage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Usage","description":"Include a final chunk with token usage statistics."}},"type":"object","title":"StreamOptions","description":"Options for streaming responses."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"}}}}
```

## The ChatRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatRes":{"properties":{"id":{"type":"string","title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/ChatResponseChoice-Output"},"type":"array","title":"Choices","description":"Response choices."},"created":{"type":"number","title":"Created","description":"Creation timestamp (unix)."},"model":{"type":"string","title":"Model","description":"Model used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."}},"additionalProperties":false,"type":"object","required":["id","choices","created","model"],"title":"ChatRes"},"ChatResponseChoice-Output":{"properties":{"index":{"type":"number","title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/ChatResponseMessage-Output","description":"Assistant message."},"finish_reason":{"title":"Finish Reason","description":"Reason generation finished.","type":"string","enum":["stop","length","tool_calls","content_filter","error"],"nullable":true},"logprobs":{"anyOf":[{},{"type":"null"}],"title":"Logprobs","description":"Logprobs if requested."}},"additionalProperties":false,"type":"object","required":["index","message"],"title":"ChatResponseChoice","description":"Single choice in a chat completion response."},"ChatResponseMessage-Output":{"properties":{"role":{"type":"string","title":"Role","description":"Message role."},"content":{"anyOf":[{},{"type":"null"}],"title":"Content","description":"Message content."},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal","description":"Refusal text when the model declines to answer."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioResponse"},{"type":"null"}],"description":"Audio output when the assistant returns audio (modalities=['audio'])."},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageContentPart"},"type":"array"},{"type":"null"}],"title":"Images","description":"Generated images (OpenRouter image-output models; modalities=['image'])."}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatResponseMessage","description":"Assistant message in a choice."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."}}}}
```

## The ChatResRelaxed-Input object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResRelaxed-Input":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"}}}}
```

## The ChatResRelaxed-Output object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResRelaxed-Output":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"}}}}
```

## The ChatResponseChoice-Input object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResponseChoice-Input":{"properties":{"index":{"type":"number","title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/ChatResponseMessage-Input","description":"Assistant message."},"finish_reason":{"title":"Finish Reason","description":"Reason generation finished.","type":"string","enum":["stop","length","tool_calls","content_filter","error"],"nullable":true},"logprobs":{"anyOf":[{},{"type":"null"}],"title":"Logprobs","description":"Logprobs if requested."}},"additionalProperties":false,"type":"object","required":["index","message"],"title":"ChatResponseChoice","description":"Single choice in a chat completion response."},"ChatResponseMessage-Input":{"properties":{"role":{"type":"string","title":"Role","description":"Message role."},"content":{"anyOf":[{},{"type":"null"}],"title":"Content","description":"Message content."},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal","description":"Refusal text when the model declines to answer."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioResponse"},{"type":"null"}],"description":"Audio output when the assistant returns audio (modalities=['audio'])."},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageContentPart"},"type":"array"},{"type":"null"}],"title":"Images","description":"Generated images (OpenRouter image-output models; modalities=['image'])."}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatResponseMessage","description":"Assistant message in a choice."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."}}}}
```

## The ChatResponseChoice-Output object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResponseChoice-Output":{"properties":{"index":{"type":"number","title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/ChatResponseMessage-Output","description":"Assistant message."},"finish_reason":{"title":"Finish Reason","description":"Reason generation finished.","type":"string","enum":["stop","length","tool_calls","content_filter","error"],"nullable":true},"logprobs":{"anyOf":[{},{"type":"null"}],"title":"Logprobs","description":"Logprobs if requested."}},"additionalProperties":false,"type":"object","required":["index","message"],"title":"ChatResponseChoice","description":"Single choice in a chat completion response."},"ChatResponseMessage-Output":{"properties":{"role":{"type":"string","title":"Role","description":"Message role."},"content":{"anyOf":[{},{"type":"null"}],"title":"Content","description":"Message content."},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal","description":"Refusal text when the model declines to answer."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioResponse"},{"type":"null"}],"description":"Audio output when the assistant returns audio (modalities=['audio'])."},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageContentPart"},"type":"array"},{"type":"null"}],"title":"Images","description":"Generated images (OpenRouter image-output models; modalities=['image'])."}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatResponseMessage","description":"Assistant message in a choice."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."}}}}
```

## The ChatResponseMessage-Input object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResponseMessage-Input":{"properties":{"role":{"type":"string","title":"Role","description":"Message role."},"content":{"anyOf":[{},{"type":"null"}],"title":"Content","description":"Message content."},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal","description":"Refusal text when the model declines to answer."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioResponse"},{"type":"null"}],"description":"Audio output when the assistant returns audio (modalities=['audio'])."},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageContentPart"},"type":"array"},{"type":"null"}],"title":"Images","description":"Generated images (OpenRouter image-output models; modalities=['image'])."}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatResponseMessage","description":"Assistant message in a choice."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."}}}}
```

## The ChatResponseMessage-Output object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResponseMessage-Output":{"properties":{"role":{"type":"string","title":"Role","description":"Message role."},"content":{"anyOf":[{},{"type":"null"}],"title":"Content","description":"Message content."},"refusal":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Refusal","description":"Refusal text when the model declines to answer."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioResponse"},{"type":"null"}],"description":"Audio output when the assistant returns audio (modalities=['audio'])."},"images":{"anyOf":[{"items":{"$ref":"#/components/schemas/ImageContentPart"},"type":"array"},{"type":"null"}],"title":"Images","description":"Generated images (OpenRouter image-output models; modalities=['image'])."}},"additionalProperties":true,"type":"object","required":["role"],"title":"ChatResponseMessage","description":"Assistant message in a choice."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"AudioResponse":{"properties":{"id":{"type":"string","title":"Id","description":"Audio response id."},"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"expires_at":{"type":"integer","title":"Expires At","description":"Unix timestamp when the audio asset stops being retrievable."},"transcript":{"type":"string","title":"Transcript","description":"Transcript of the synthesized audio."}},"additionalProperties":true,"type":"object","required":["id","data","expires_at","transcript"],"title":"AudioResponse","description":"Audio output emitted on the assistant message (gpt-4o-audio family)."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."}}}}
```

## The ChatResponseUsage object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."}}}}
```

## The CodeEvaluator object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CodeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.code","title":"Object","description":"Object type.","default":"evaluator.code"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"source":{"type":"string","title":"Source","description":"Source code to evaluate."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional list of package requirements."}},"type":"object","required":["project_id","id","name","created_at","source"],"title":"CodeEvaluator"}}}}
```

## The Container-Input object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Container-Input":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"best_model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Model Id","description":"Best model id."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","project_id","label"],"title":"Container"},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The Container-Output object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Container-Output":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"best_model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Model Id","description":"Best model id."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","project_id","label"],"title":"Container"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The ContainerDataSource object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"}}}}
```

## The ContainerListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ContainerListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Container-Output"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ContainerListResponse"},"Container-Output":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"best_model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Model Id","description":"Best model id."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","project_id","label"],"title":"Container"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The CreateContainerReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CreateContainerReq":{"properties":{"label":{"type":"string","title":"Label","description":"Container label."},"initial_model":{"type":"string","title":"Initial Model","description":"Initial model slug."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Default inference parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."}},"type":"object","required":["label","initial_model"],"title":"CreateContainerReq"},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The CreateContainerRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CreateContainerRes":{"properties":{"id":{"type":"string","title":"Id","description":"Container id."},"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"label":{"type":"string","title":"Label","description":"Container label."},"api":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"],"title":"Api","description":"API type.","default":"chat.completions"},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Default system prompt."},"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Default inference parameters."},"optimized_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Optimized System Prompt","description":"Optimized system prompt."},"system_prompt_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"System Prompt Prefix","description":"GEPA-optimized prefix prepended to every request's system prompt."},"optimized_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Output"},{"type":"null"}],"description":"Optimized inference parameters."},"default_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Default Few Shot Messages","description":"Default few shot messages."},"optimized_few_shot_messages":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"null"}],"title":"Optimized Few Shot Messages","description":"Optimized few shot messages."},"initial_model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Initial Model","description":"Initial model slug."},"deleted_at":{"type":"boolean","title":"Deleted At","description":"Soft delete flag.","default":false}},"type":"object","required":["id","label"],"title":"CreateContainerRes"},"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The CreateDatasetReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CreateDatasetReq":{"properties":{"name":{"type":"string","title":"Name","description":"Dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Dataset description."},"container":{"type":"string","title":"Container","description":"Container id or label for source data."},"size":{"type":"integer","exclusiveMinimum":0,"title":"Size","description":"Requested dataset size."},"filters":{"items":{"$ref":"#/components/schemas/DatasetFilter"},"type":"array","title":"Filters","description":"Filter conditions."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional dataset tags."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary metadata."}},"additionalProperties":false,"type":"object","required":["name","container","size"],"title":"CreateDatasetReq"},"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"}}}}
```

## The CreateDatasetRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CreateDatasetRes":{"properties":{"id":{"type":"string","title":"Id","description":"ID of the created dataset."},"message":{"type":"string","title":"Message","description":"Status message."}},"type":"object","required":["id","message"],"title":"CreateDatasetRes"}}}}
```

## The CreateOptimizationRunReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CreateOptimizationRunReq":{"properties":{"container":{"type":"string","minLength":1,"title":"Container","description":"Container id or label."},"base_models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","title":"Base Models","description":"Base model ids or labels."},"evals":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","title":"Evals","description":"Evaluator ids or labels."},"methods":{"items":{"anyOf":[{"$ref":"#/components/schemas/SFTMethod"},{"$ref":"#/components/schemas/GRPOMethod"}]},"type":"array","title":"Methods","description":"Optimization methods to run."},"data_source":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/FileDataSource"},{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","file":"#/components/schemas/FileDataSource"}}},{"type":"null"}],"title":"Data Source","description":"Optional data source override."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Execution environment name.","default":"main"}},"type":"object","required":["container","base_models","evals","methods"],"title":"CreateOptimizationRunReq"},"SFTMethod":{"properties":{"type":{"type":"string","const":"sft","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/SFTHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"SFTMethod"},"SFTHyperparameters":{"properties":{"max_steps":{"type":"integer","title":"Max Steps"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"lora_dim":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Dim"},"lora_alpha":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Alpha"},"per_device_train_batch_size":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Per Device Train Batch Size"},"gradient_accumulation_steps":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Gradient Accumulation Steps"},"warmup_ratio":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Warmup Ratio"},"optim":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Optim"},"weight_decay":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Weight Decay"},"lr_scheduler_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Lr Scheduler Type"},"learning_rate":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Learning Rate"},"seed":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Seed"},"mode":{"anyOf":[{"items":{"type":"string","enum":["autoregression","classification","regression"]},"type":"array"},{"type":"string","enum":["autoregression","classification","regression"]}],"title":"Mode"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":7},"train_range":{"type":"string","title":"Train Range","default":"500:20000"},"eval_range":{"type":"string","title":"Eval Range","default":"0:500"},"top_c":{"type":"integer","title":"Top C","default":10},"filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"},"max_seq_len":{"type":"integer","title":"Max Seq Len","default":2048},"max_gen_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Gen Tokens"},"target_key":{"type":"string","title":"Target Key","default":"relevance"},"classification_labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Classification Labels"}},"additionalProperties":true,"type":"object","required":["max_steps","lora_targets","lora_dim","lora_alpha","per_device_train_batch_size","gradient_accumulation_steps","warmup_ratio","optim","weight_decay","lr_scheduler_type","learning_rate","seed","mode"],"title":"SFTHyperparameters"},"GRPOMethod":{"properties":{"type":{"type":"string","const":"grpo","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/GRPOHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"GRPOMethod"},"GRPOHyperparameters":{"properties":{"lora_alpha":{"items":{"type":"number"},"type":"array","title":"Lora Alpha"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"learning_rate":{"type":"number","title":"Learning Rate"},"batch_size":{"type":"integer","title":"Batch Size"},"max_steps":{"type":"integer","title":"Max Steps"},"seed":{"type":"integer","title":"Seed"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":5}},"type":"object","required":["lora_alpha","lora_targets","learning_rate","batch_size","max_steps","seed"],"title":"GRPOHyperparameters"},"FileDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"file","title":"Type"},"file":{"type":"string","minLength":1,"title":"File","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","file"],"title":"FileDataSource"},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"}}}}
```

## The CreateOptimizationRunRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"CreateOptimizationRunRes":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"optimization.run","title":"Object","description":"Object type.","default":"optimization.run"},"id":{"type":"string","title":"Id","description":"Optimization run id."},"container_id":{"type":"string","title":"Container Id","description":"Container id."},"base_models":{"items":{"type":"string"},"type":"array","title":"Base Models","description":"Base model ids."},"methods":{"items":{"anyOf":[{"$ref":"#/components/schemas/SFTMethod"},{"$ref":"#/components/schemas/GRPOMethod"}]},"type":"array","title":"Methods","description":"Optimization methods used."},"dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset","description":"Dataset id."},"evaluators":{"items":{"type":"string"},"type":"array","title":"Evaluators","description":"Evaluator ids."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Optimization metrics."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"best_checkpoint":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Checkpoint","description":"Best checkpoint id."}},"type":"object","required":["created_at","status","id","container_id","base_models","methods","evaluators"],"title":"CreateOptimizationRunRes"},"SFTMethod":{"properties":{"type":{"type":"string","const":"sft","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/SFTHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"SFTMethod"},"SFTHyperparameters":{"properties":{"max_steps":{"type":"integer","title":"Max Steps"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"lora_dim":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Dim"},"lora_alpha":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Alpha"},"per_device_train_batch_size":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Per Device Train Batch Size"},"gradient_accumulation_steps":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Gradient Accumulation Steps"},"warmup_ratio":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Warmup Ratio"},"optim":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Optim"},"weight_decay":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Weight Decay"},"lr_scheduler_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Lr Scheduler Type"},"learning_rate":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Learning Rate"},"seed":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Seed"},"mode":{"anyOf":[{"items":{"type":"string","enum":["autoregression","classification","regression"]},"type":"array"},{"type":"string","enum":["autoregression","classification","regression"]}],"title":"Mode"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":7},"train_range":{"type":"string","title":"Train Range","default":"500:20000"},"eval_range":{"type":"string","title":"Eval Range","default":"0:500"},"top_c":{"type":"integer","title":"Top C","default":10},"filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"},"max_seq_len":{"type":"integer","title":"Max Seq Len","default":2048},"max_gen_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Gen Tokens"},"target_key":{"type":"string","title":"Target Key","default":"relevance"},"classification_labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Classification Labels"}},"additionalProperties":true,"type":"object","required":["max_steps","lora_targets","lora_dim","lora_alpha","per_device_train_batch_size","gradient_accumulation_steps","warmup_ratio","optim","weight_decay","lr_scheduler_type","learning_rate","seed","mode"],"title":"SFTHyperparameters"},"GRPOMethod":{"properties":{"type":{"type":"string","const":"grpo","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/GRPOHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"GRPOMethod"},"GRPOHyperparameters":{"properties":{"lora_alpha":{"items":{"type":"number"},"type":"array","title":"Lora Alpha"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"learning_rate":{"type":"number","title":"Learning Rate"},"batch_size":{"type":"integer","title":"Batch Size"},"max_steps":{"type":"integer","title":"Max Steps"},"seed":{"type":"integer","title":"Seed"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":5}},"type":"object","required":["lora_alpha","lora_targets","learning_rate","batch_size","max_steps","seed"],"title":"GRPOHyperparameters"}}}}
```

## The Dataset object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Dataset":{"properties":{"id":{"type":"string","title":"Id","description":"Dataset id."},"object":{"type":"string","const":"dataset","title":"Object","description":"Object type.","default":"dataset"},"name":{"type":"string","title":"Name","description":"Dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Dataset description."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"requested_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Size","description":"Requested dataset size."},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size","description":"Actual dataset size."},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/DatasetFilter"},"type":"array"},{"type":"null"}],"title":"Filters","description":"Filters applied when building the dataset."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional dataset tags."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary metadata."}},"type":"object","required":["id","name"],"title":"Dataset"},"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"}}}}
```

## The DatasetDataSource object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"}}}}
```

## The DatasetFilter object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"}}}}
```

## The DatasetFilterOperator object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"}}}}
```

## The DeleteContainerRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"DeleteContainerRes":{"properties":{"object":{"type":"string","const":"container","title":"Object","description":"Object type.","default":"container"},"label":{"type":"string","title":"Label","description":"Container label."},"deleted":{"type":"boolean","const":true,"title":"Deleted","description":"Deletion status.","default":true}},"additionalProperties":false,"type":"object","required":["label"],"title":"DeleteContainerRes"}}}}
```

## The DeleteEvaluatorRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"DeleteEvaluatorRes":{"properties":{"object":{"type":"string","const":"evaluator","title":"Object","description":"Object type.","default":"evaluator"},"id":{"type":"string","title":"Id","description":"Evaluator id."},"deleted":{"type":"boolean","const":true,"title":"Deleted","description":"Deletion status.","default":true}},"additionalProperties":false,"type":"object","required":["id"],"title":"DeleteEvaluatorRes"}}}}
```

## The ErrorResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."}}}}
```

## The EvaluationRun object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."}}}}
```

## The EvaluationRunListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/EvaluationRun"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"EvaluationRunListResponse"},"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."}}}}
```

## The EvaluationRunOverallResults object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."}}}}
```

## The EvaluationRunPerEvalResults object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."}}}}
```

## The EvaluationRunPerModelResults object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."}}}}
```

## The EvaluationRunReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunReq":{"properties":{"container":{"type":"string","title":"Container","description":"Container id or label."},"evaluators":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Evaluators","description":"Evaluator ids or labels."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Sample-side data source. Omit to default to the container's task logs. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with the specified models."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Ground-truth-side data source. Omit to default to the container's task logs. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with a model."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Baseline-side data source for pairwise evaluation. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with a model."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Execution environment name (maps to Modal app suffix).","default":"main"}},"additionalProperties":false,"type":"object","required":["container","evaluators"],"title":"EvaluationRunReq","description":"Request body for creating an evaluation run.\n\nEach side of the evaluation (``sample`` and ``ground_truth``) is described\nby a single data-source object whose ``type`` discriminator determines how\ndata is obtained:\n\n- ``\"dataset\"``   — pull from a dataset.\n- ``\"container\"`` — pull from the container's task logs.\n- ``\"generate\"``  — generate completions using one or more models.\n\nBoth fields are optional, but **at least one must be provided**.  When a\nside is omitted it defaults to the top-level container's task logs.  At\nleast one resolved side must not be ``type='generate'`` so there is seed\ninput to evaluate against."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."}}}}
```

## The EvaluationRunResults-Input object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunResults-Input":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."}}}}
```

## The EvaluationRunResults-Output object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."}}}}
```

## The EvaluatorListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluatorListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"anyOf":[{"$ref":"#/components/schemas/JudgeEvaluator"},{"$ref":"#/components/schemas/CodeEvaluator"}]},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"EvaluatorListResponse"},"JudgeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.judge","title":"Object","description":"Object type.","default":"evaluator.judge"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"model":{"type":"string","title":"Model","description":"Judge model slug."},"prompt":{"type":"string","title":"Prompt","description":"Judge prompt."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for the judge model (e.g. response_format, temperature)."}},"type":"object","required":["project_id","id","name","created_at","model","prompt"],"title":"JudgeEvaluator"},"CodeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.code","title":"Object","description":"Object type.","default":"evaluator.code"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"source":{"type":"string","title":"Source","description":"Source code to evaluate."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional list of package requirements."}},"type":"object","required":["project_id","id","name","created_at","source"],"title":"CodeEvaluator"}}}}
```

## The EvaluatorReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"EvaluatorReq":{"properties":{"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label."},"type":{"type":"string","enum":["judge","code"],"title":"Type","description":"Evaluator type."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Judge model slug."},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Judge prompt."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Code evaluator source."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional requirements list."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode.","default":"pointwise"},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for judge evaluators (e.g. response_format, temperature)."}},"additionalProperties":false,"type":"object","required":["type"],"title":"EvaluatorReq"}}}}
```

## The FileContentPart object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."}}}}
```

## The FileDataSource object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FileDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"file","title":"Type"},"file":{"type":"string","minLength":1,"title":"File","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","file"],"title":"FileDataSource"}}}}
```

## The FileDeleteResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FileDeleteResponse":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"deleted":{"type":"boolean","title":"Deleted","description":"Deletion status.","default":true}},"additionalProperties":false,"type":"object","required":["id"],"title":"FileDeleteResponse","description":"OpenAI-compatible delete response."}}}}
```

## The FileListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FileListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/FileObject"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"FileListResponse","description":"OpenAI-compatible list response for files."},"FileObject":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"bytes":{"type":"integer","minimum":0,"title":"Bytes","description":"File size in bytes."},"created_at":{"type":"integer","minimum":0,"title":"Created At","description":"Unix timestamp (seconds)."},"filename":{"type":"string","title":"Filename","description":"Original filename."},"purpose":{"type":"string","title":"Purpose","description":"Intended file purpose."},"status":{"type":"string","title":"Status","description":"Current file status."},"status_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Details","description":"Optional status details."}},"additionalProperties":false,"type":"object","required":["id","bytes","created_at","filename","purpose","status"],"title":"FileObject","description":"OpenAI-compatible file object (subset).\n\nWe keep `id` as the DB UUID string, and expose the OpenAI-ish envelope."}}}}
```

## The FileObject object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FileObject":{"properties":{"id":{"type":"string","title":"Id","description":"File id (UUID)."},"object":{"type":"string","const":"file","title":"Object","description":"Object type.","default":"file"},"bytes":{"type":"integer","minimum":0,"title":"Bytes","description":"File size in bytes."},"created_at":{"type":"integer","minimum":0,"title":"Created At","description":"Unix timestamp (seconds)."},"filename":{"type":"string","title":"Filename","description":"Original filename."},"purpose":{"type":"string","title":"Purpose","description":"Intended file purpose."},"status":{"type":"string","title":"Status","description":"Current file status."},"status_details":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Details","description":"Optional status details."}},"additionalProperties":false,"type":"object","required":["id","bytes","created_at","filename","purpose","status"],"title":"FileObject","description":"OpenAI-compatible file object (subset).\n\nWe keep `id` as the DB UUID string, and expose the OpenAI-ish envelope."}}}}
```

## The FileRef object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."}}}}
```

## The FunctionCall object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."}}}}
```

## The FunctionDefinition object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."}}}}
```

## The GRPOHyperparameters object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"GRPOHyperparameters":{"properties":{"lora_alpha":{"items":{"type":"number"},"type":"array","title":"Lora Alpha"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"learning_rate":{"type":"number","title":"Learning Rate"},"batch_size":{"type":"integer","title":"Batch Size"},"max_steps":{"type":"integer","title":"Max Steps"},"seed":{"type":"integer","title":"Seed"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":5}},"type":"object","required":["lora_alpha","lora_targets","learning_rate","batch_size","max_steps","seed"],"title":"GRPOHyperparameters"}}}}
```

## The GRPOMethod object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"GRPOMethod":{"properties":{"type":{"type":"string","const":"grpo","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/GRPOHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"GRPOMethod"},"GRPOHyperparameters":{"properties":{"lora_alpha":{"items":{"type":"number"},"type":"array","title":"Lora Alpha"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"learning_rate":{"type":"number","title":"Learning Rate"},"batch_size":{"type":"integer","title":"Batch Size"},"max_steps":{"type":"integer","title":"Max Steps"},"seed":{"type":"integer","title":"Seed"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":5}},"type":"object","required":["lora_alpha","lora_targets","learning_rate","batch_size","max_steps","seed"],"title":"GRPOHyperparameters"}}}}
```

## The GenerateDataSource object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."}}}}
```

## The HTTPValidationError object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## The HealthResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"}},"additionalProperties":false,"type":"object","required":["ok"],"title":"HealthResponse","description":"Health check response."}}}}
```

## The ImageConfig object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."}}}}
```

## The ImageContentPart object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."}}}}
```

## The ImageURL object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."}}}}
```

## The InferenceParams-Input object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The InferenceParams-Output object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"InferenceParams-Output":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The InputAudio object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."}}}}
```

## The InputAudioContentPart object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."}}}}
```

## The Item object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Item":{"properties":{"input":{"$ref":"#/components/schemas/ChatReq"},"output":{"anyOf":[{"$ref":"#/components/schemas/ChatResRelaxed-Input"},{"type":"null"}],"description":"Chat completion output. Omit to register input-only examples."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional tags for this example."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata for this example."}},"additionalProperties":false,"type":"object","required":["input"],"title":"Item"},"ChatReq":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Messages","description":"Conversation messages."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug to use. Supports global slugs and container routes; `/` and `:` are treated equivalently on input."},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Fallback models."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Arbitrary key/value metadata to attach to the request."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","description":"Stream response.","default":false},"stream_options":{"anyOf":[{"$ref":"#/components/schemas/StreamOptions"},{"type":"null"}],"description":"Streaming options (e.g. `include_usage`). Non-inference field: it is not validated against `model.supported_parameters`. Set `include_usage=true` to receive the final usage chunk in the stream."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Optional tags for tracking."},"store":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store","description":"Whether to store the completion in the database.","default":true},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context used to group related requests across containers."}},"additionalProperties":false,"type":"object","required":["messages"],"title":"ManiacChatRequest","description":"OpenAI-compatible chat completion request with Maniac extensions."},"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role","description":"Message role."},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextContentPart"},{"$ref":"#/components/schemas/ImageContentPart"},{"$ref":"#/components/schemas/InputAudioContentPart"},{"$ref":"#/components/schemas/FileContentPart"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/FileContentPart","image_url":"#/components/schemas/ImageContentPart","input_audio":"#/components/schemas/InputAudioContentPart","text":"#/components/schemas/TextContentPart"}}},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or list of content parts)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls (assistant message)."},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Tool call ID (tool messages)."}},"additionalProperties":false,"type":"object","required":["role"],"title":"Message","description":"OpenAI-style chat message."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."},"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"StreamOptions":{"properties":{"include_usage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Usage","description":"Include a final chunk with token usage statistics."}},"type":"object","title":"StreamOptions","description":"Options for streaming responses."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"ChatResRelaxed-Input":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."}}}}
```

## The JsonSchemaConfig object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."}}}}
```

## The JudgeEvaluator object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"JudgeEvaluator":{"properties":{"object":{"type":"string","const":"evaluator.judge","title":"Object","description":"Object type.","default":"evaluator.judge"},"project_id":{"type":"string","title":"Project Id","description":"Project id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"id":{"type":"string","title":"Id","description":"Evaluator id."},"name":{"type":"string","title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"created_at":{"type":"string","title":"Created At","description":"Creation timestamp."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"type":"string","enum":["pointwise","reference","pairwise"],"title":"Mode","description":"Evaluation mode: score a candidate directly, against a reference, or against a baseline.","default":"pointwise"},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label (if container-specific)."},"model":{"type":"string","title":"Model","description":"Judge model slug."},"prompt":{"type":"string","title":"Prompt","description":"Judge prompt."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for the judge model (e.g. response_format, temperature)."}},"type":"object","required":["project_id","id","name","created_at","model","prompt"],"title":"JudgeEvaluator"}}}}
```

## The ListResponse\_Dataset\_ object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ListResponse_Dataset_":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/Dataset"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ListResponse[Dataset]"},"Dataset":{"properties":{"id":{"type":"string","title":"Id","description":"Dataset id."},"object":{"type":"string","const":"dataset","title":"Object","description":"Object type.","default":"dataset"},"name":{"type":"string","title":"Name","description":"Dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Dataset description."},"user_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"User Id","description":"Owner user id."},"project_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Project Id","description":"Project id."},"org_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Org Id","description":"Organization id."},"container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container Id","description":"Container id."},"requested_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Requested Size","description":"Requested dataset size."},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size","description":"Actual dataset size."},"filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/DatasetFilter"},"type":"array"},{"type":"null"}],"title":"Filters","description":"Filters applied when building the dataset."},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At","description":"Creation timestamp."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional dataset tags."},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Arbitrary metadata."}},"type":"object","required":["id","name"],"title":"Dataset"},"DatasetFilter":{"properties":{"key":{"type":"string","title":"Key","description":"Filter key (e.g. 'model_name', 'status')."},"operator":{"$ref":"#/components/schemas/DatasetFilterOperator","description":"Filter operator."},"value":{"anyOf":[{},{"type":"null"}],"title":"Value","description":"Filter value (required for most operators)."}},"additionalProperties":false,"type":"object","required":["key","operator"],"title":"DatasetFilter"},"DatasetFilterOperator":{"type":"string","enum":["equals","not_equals","contains","not_contains","greater_than","less_than","greater_than_or_equal","less_than_or_equal","in","not_in","exists","not_exists","between"],"title":"DatasetFilterOperator"}}}}
```

## The ManiacError object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."}}}}
```

## The Message object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role","description":"Message role."},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextContentPart"},{"$ref":"#/components/schemas/ImageContentPart"},{"$ref":"#/components/schemas/InputAudioContentPart"},{"$ref":"#/components/schemas/FileContentPart"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/FileContentPart","image_url":"#/components/schemas/ImageContentPart","input_audio":"#/components/schemas/InputAudioContentPart","text":"#/components/schemas/TextContentPart"}}},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or list of content parts)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls (assistant message)."},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Tool call ID (tool messages)."}},"additionalProperties":false,"type":"object","required":["role"],"title":"Message","description":"OpenAI-style chat message."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."},"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."}}}}
```

## The ModelListItem object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ModelListItem":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Object type.","default":"model"},"id":{"type":"string","title":"Id","description":"Model id."},"slug":{"type":"string","title":"Slug","description":"Model slug."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Unix timestamp of when the model was added."},"context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Length","description":"Maximum context length in tokens."},"pricing":{"$ref":"#/components/schemas/Pricing","description":"Pricing information."},"supported_parameters":{"items":{"type":"string"},"type":"array","title":"Supported Parameters","description":"Supported inference parameters."},"supported_apis":{"items":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"]},"type":"array","title":"Supported Apis","description":"Supported APIs."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Model provider."},"desktop_picker_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Desktop Picker Rank","description":"Optional rank for desktop picker recommendations; lower values sort first."}},"type":"object","required":["id","slug","pricing","supported_parameters","supported_apis"],"title":"ModelListItem"},"Pricing":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Price per prompt token or unit."},"completion":{"type":"string","title":"Completion","description":"Price per completion token or unit."},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Price per image input."},"request":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request","description":"Price per request."},"discount":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount","description":"Discount rate."},"web_search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Search","description":"Price per web search call."},"image_output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Output","description":"Price per image output."},"input_cache_read":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Cache Read","description":"Price per cache read."},"internal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Reasoning","description":"Price for internal reasoning tokens."}},"additionalProperties":true,"type":"object","required":["prompt","completion"],"title":"Pricing"}}}}
```

## The ModelListResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ModelListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/ModelListItem"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"ModelListResponse"},"ModelListItem":{"properties":{"object":{"type":"string","const":"model","title":"Object","description":"Object type.","default":"model"},"id":{"type":"string","title":"Id","description":"Model id."},"slug":{"type":"string","title":"Slug","description":"Model slug."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Display name."},"created":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Created","description":"Unix timestamp of when the model was added."},"context_length":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Context Length","description":"Maximum context length in tokens."},"pricing":{"$ref":"#/components/schemas/Pricing","description":"Pricing information."},"supported_parameters":{"items":{"type":"string"},"type":"array","title":"Supported Parameters","description":"Supported inference parameters."},"supported_apis":{"items":{"type":"string","enum":["chat.completions","completions","responses","embeddings","rerank","containers","models","datasets","evaluation","optimization","project.keys"]},"type":"array","title":"Supported Apis","description":"Supported APIs."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Model provider."},"desktop_picker_rank":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Desktop Picker Rank","description":"Optional rank for desktop picker recommendations; lower values sort first."}},"type":"object","required":["id","slug","pricing","supported_parameters","supported_apis"],"title":"ModelListItem"},"Pricing":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Price per prompt token or unit."},"completion":{"type":"string","title":"Completion","description":"Price per completion token or unit."},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Price per image input."},"request":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request","description":"Price per request."},"discount":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount","description":"Discount rate."},"web_search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Search","description":"Price per web search call."},"image_output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Output","description":"Price per image output."},"input_cache_read":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Cache Read","description":"Price per cache read."},"internal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Reasoning","description":"Price for internal reasoning tokens."}},"additionalProperties":true,"type":"object","required":["prompt","completion"],"title":"Pricing"}}}}
```

## The PredictionContent object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."}}}}
```

## The Pricing object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"Pricing":{"properties":{"prompt":{"type":"string","title":"Prompt","description":"Price per prompt token or unit."},"completion":{"type":"string","title":"Completion","description":"Price per completion token or unit."},"image":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image","description":"Price per image input."},"request":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Request","description":"Price per request."},"discount":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Discount","description":"Discount rate."},"web_search":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Web Search","description":"Price per web search call."},"image_output":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Output","description":"Price per image output."},"input_cache_read":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Cache Read","description":"Price per cache read."},"internal_reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Internal Reasoning","description":"Price for internal reasoning tokens."}},"additionalProperties":true,"type":"object","required":["prompt","completion"],"title":"Pricing"}}}}
```

## The RLMResponsesError object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RLMResponsesError":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"RLMResponsesError"}}}}
```

## The RLMResponsesOutputMessage object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RLMResponsesOutputMessage":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"message","title":"Type","default":"message"},"status":{"type":"string","const":"completed","title":"Status","default":"completed"},"role":{"type":"string","const":"assistant","title":"Role","default":"assistant"},"content":{"items":{"$ref":"#/components/schemas/RLMResponsesOutputText"},"type":"array","title":"Content"}},"additionalProperties":false,"type":"object","required":["id","content"],"title":"RLMResponsesOutputMessage"},"RLMResponsesOutputText":{"properties":{"type":{"type":"string","const":"output_text","title":"Type","default":"output_text"},"text":{"type":"string","title":"Text"},"annotations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Annotations"}},"additionalProperties":false,"type":"object","required":["text"],"title":"RLMResponsesOutputText"}}}}
```

## The RLMResponsesOutputText object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RLMResponsesOutputText":{"properties":{"type":{"type":"string","const":"output_text","title":"Type","default":"output_text"},"text":{"type":"string","title":"Text"},"annotations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Annotations"}},"additionalProperties":false,"type":"object","required":["text"],"title":"RLMResponsesOutputText"}}}}
```

## The RLMResponsesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RLMResponsesResponse":{"properties":{"id":{"type":"string","title":"Id"},"object":{"type":"string","const":"response","title":"Object","default":"response"},"created_at":{"type":"integer","title":"Created At"},"status":{"type":"string","enum":["in_progress","completed","failed"],"title":"Status"},"model":{"type":"string","title":"Model"},"store":{"type":"boolean","const":false,"title":"Store","default":false},"metadata":{"additionalProperties":{"type":"string"},"type":"object","title":"Metadata"},"output":{"anyOf":[{"items":{"$ref":"#/components/schemas/RLMResponsesOutputMessage"},"type":"array"},{"type":"null"}],"title":"Output"},"output_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Output Text"},"usage":{"anyOf":[{"$ref":"#/components/schemas/RLMResponsesUsage"},{"type":"null"}]},"error":{"anyOf":[{"$ref":"#/components/schemas/RLMResponsesError"},{"type":"null"}]}},"additionalProperties":false,"type":"object","required":["id","created_at","status","model"],"title":"RLMResponsesResponse"},"RLMResponsesOutputMessage":{"properties":{"id":{"type":"string","title":"Id"},"type":{"type":"string","const":"message","title":"Type","default":"message"},"status":{"type":"string","const":"completed","title":"Status","default":"completed"},"role":{"type":"string","const":"assistant","title":"Role","default":"assistant"},"content":{"items":{"$ref":"#/components/schemas/RLMResponsesOutputText"},"type":"array","title":"Content"}},"additionalProperties":false,"type":"object","required":["id","content"],"title":"RLMResponsesOutputMessage"},"RLMResponsesOutputText":{"properties":{"type":{"type":"string","const":"output_text","title":"Type","default":"output_text"},"text":{"type":"string","title":"Text"},"annotations":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Annotations"}},"additionalProperties":false,"type":"object","required":["text"],"title":"RLMResponsesOutputText"},"RLMResponsesUsage":{"properties":{"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"}},"additionalProperties":false,"type":"object","required":["input_tokens","output_tokens","total_tokens"],"title":"RLMResponsesUsage"},"RLMResponsesError":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details"}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"RLMResponsesError"}}}}
```

## The RLMResponsesUsage object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RLMResponsesUsage":{"properties":{"input_tokens":{"type":"integer","title":"Input Tokens"},"output_tokens":{"type":"integer","title":"Output Tokens"},"total_tokens":{"type":"integer","title":"Total Tokens"}},"additionalProperties":false,"type":"object","required":["input_tokens","output_tokens","total_tokens"],"title":"RLMResponsesUsage"}}}}
```

## The ReasoningConfig object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."}}}}
```

## The RegisterOutputChoice object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"}}}}
```

## The RegisterOutputMessage object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"}}}}
```

## The RegisterReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RegisterReq":{"properties":{"items":{"items":{"$ref":"#/components/schemas/Item"},"type":"array","title":"Items","description":"List of chat input/output examples."},"container":{"type":"string","title":"Container","description":"Container label to associate these examples with."}},"additionalProperties":false,"type":"object","required":["items","container"],"title":"RegisterChatCompletionsRequest","description":"Register completed chat examples for evaluation or analytics."},"Item":{"properties":{"input":{"$ref":"#/components/schemas/ChatReq"},"output":{"anyOf":[{"$ref":"#/components/schemas/ChatResRelaxed-Input"},{"type":"null"}],"description":"Chat completion output. Omit to register input-only examples."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Optional tags for this example."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata for this example."}},"additionalProperties":false,"type":"object","required":["input"],"title":"Item"},"ChatReq":{"properties":{"messages":{"items":{"$ref":"#/components/schemas/Message"},"type":"array","title":"Messages","description":"Conversation messages."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug to use. Supports global slugs and container routes; `/` and `:` are treated equivalently on input."},"models":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Models","description":"Fallback models."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Arbitrary key/value metadata to attach to the request."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"stream":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Stream","description":"Stream response.","default":false},"stream_options":{"anyOf":[{"$ref":"#/components/schemas/StreamOptions"},{"type":"null"}],"description":"Streaming options (e.g. `include_usage`). Non-inference field: it is not validated against `model.supported_parameters`. Set `include_usage=true` to receive the final usage chunk in the stream."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Optional tags for tracking."},"store":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Store","description":"Whether to store the completion in the database.","default":true},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context used to group related requests across containers."}},"additionalProperties":false,"type":"object","required":["messages"],"title":"ManiacChatRequest","description":"OpenAI-compatible chat completion request with Maniac extensions."},"Message":{"properties":{"role":{"type":"string","enum":["system","user","assistant","developer","tool"],"title":"Role","description":"Message role."},"content":{"anyOf":[{"type":"string"},{"items":{"oneOf":[{"$ref":"#/components/schemas/TextContentPart"},{"$ref":"#/components/schemas/ImageContentPart"},{"$ref":"#/components/schemas/InputAudioContentPart"},{"$ref":"#/components/schemas/FileContentPart"}],"discriminator":{"propertyName":"type","mapping":{"file":"#/components/schemas/FileContentPart","image_url":"#/components/schemas/ImageContentPart","input_audio":"#/components/schemas/InputAudioContentPart","text":"#/components/schemas/TextContentPart"}}},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or list of content parts)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional name."},"tool_calls":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolCall"},"type":"array"},{"type":"null"}],"title":"Tool Calls","description":"Tool calls (assistant message)."},"tool_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tool Call Id","description":"Tool call ID (tool messages)."}},"additionalProperties":false,"type":"object","required":["role"],"title":"Message","description":"OpenAI-style chat message."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"ImageContentPart":{"properties":{"type":{"type":"string","const":"image_url","title":"Type","description":"Content part type.","default":"image_url"},"image_url":{"$ref":"#/components/schemas/ImageURL","description":"Image URL object with 'url' and optional 'detail'."}},"type":"object","required":["image_url"],"title":"ImageContentPart","description":"Image content part in a message."},"ImageURL":{"properties":{"url":{"type":"string","title":"Url","description":"Image URL (http(s) or data URL)."},"detail":{"title":"Detail","description":"Image detail hint; 'auto' lets the provider decide.","type":"string","enum":["auto","low","high"],"nullable":true}},"additionalProperties":true,"type":"object","required":["url"],"title":"ImageURL","description":"Image URL object inside an image_url content part.\n\nMirrors OpenAI's chat completions image content; ``detail`` is optional and\n``extra=\"allow\"`` keeps the door open for provider-specific extensions\n(OpenRouter occasionally adds routing hints here)."},"InputAudioContentPart":{"properties":{"type":{"type":"string","const":"input_audio","title":"Type","description":"Content part type.","default":"input_audio"},"input_audio":{"$ref":"#/components/schemas/InputAudio","description":"Audio payload."}},"type":"object","required":["input_audio"],"title":"InputAudioContentPart","description":"Audio content part in a user message (gpt-4o-audio family)."},"InputAudio":{"properties":{"data":{"type":"string","title":"Data","description":"Base64-encoded audio bytes."},"format":{"type":"string","enum":["wav","mp3"],"title":"Format","description":"Audio container format."}},"additionalProperties":false,"type":"object","required":["data","format"],"title":"InputAudio","description":"Audio payload inside an input_audio content part."},"FileContentPart":{"properties":{"type":{"type":"string","const":"file","title":"Type","description":"Content part type.","default":"file"},"file":{"$ref":"#/components/schemas/FileRef","description":"File reference (uploaded id or inline data)."}},"type":"object","required":["file"],"title":"FileContentPart","description":"File content part (e.g. PDFs) attached to a user message."},"FileRef":{"properties":{"file_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Id","description":"Id of a previously uploaded file."},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Display filename to send to the model (required with file_data)."},"file_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"File Data","description":"Inline file payload as a data URL (e.g. data:application/pdf;base64,...)."}},"additionalProperties":true,"type":"object","title":"FileRef","description":"File reference inside a file content part.\n\nEither ``file_id`` (a previously uploaded file) or ``file_data`` (an inline\ndata URL, typically alongside ``filename``) must be set, matching OpenAI's\nfile input shape for chat completions."},"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"StreamOptions":{"properties":{"include_usage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Usage","description":"Include a final chunk with token usage statistics."}},"type":"object","title":"StreamOptions","description":"Options for streaming responses."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"ChatResRelaxed-Input":{"properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Completion id."},"choices":{"items":{"$ref":"#/components/schemas/RegisterOutputChoice"},"type":"array","title":"Choices"},"created":{"anyOf":[{},{"type":"null"}],"title":"Created","description":"Creation timestamp (unix seconds)."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Model slug used."},"object":{"type":"string","const":"chat.completion","title":"Object","description":"Object type.","default":"chat.completion"},"usage":{"anyOf":[{"$ref":"#/components/schemas/ChatResponseUsage"},{"type":"null"}],"description":"Token usage."},"provider":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider","description":"Upstream provider name, if available."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label used for routing, if any."},"model_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Id","description":"Model ID (uuid)."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags","description":"Tags for this completion."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Metadata for this completion."},"trace":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Optional external trace/span context associated with this completion."}},"type":"object","required":["choices"],"title":"ChatResRelaxed"},"RegisterOutputChoice":{"properties":{"index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Index","description":"Choice index."},"message":{"$ref":"#/components/schemas/RegisterOutputMessage"},"finish_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finish Reason","description":"Reason the generation finished."}},"additionalProperties":true,"type":"object","required":["message"],"title":"RegisterOutputChoice"},"RegisterOutputMessage":{"properties":{"role":{"type":"string","title":"Role","description":"Message role (system, user, assistant)."},"content":{"anyOf":[{"type":"string"},{"items":{},"type":"array"},{"type":"null"}],"title":"Content","description":"Message content (string or structured parts)."}},"additionalProperties":true,"type":"object","required":["role"],"title":"RegisterOutputMessage"},"ChatResponseUsage":{"properties":{"prompt_tokens":{"type":"number","title":"Prompt Tokens","description":"Prompt tokens."},"completion_tokens":{"type":"number","title":"Completion Tokens","description":"Completion tokens."},"total_tokens":{"type":"number","title":"Total Tokens","description":"Total tokens."},"completion_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Completion Tokens Details"},"prompt_tokens_details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Prompt Tokens Details"}},"additionalProperties":true,"type":"object","required":["prompt_tokens","completion_tokens","total_tokens"],"title":"ChatResponseUsage","description":"Token usage in a chat completion response."}}}}
```

## The RegisterRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"RegisterRes":{"properties":{"ok":{"type":"boolean","title":"Ok","description":"Whether the register operation succeeded."},"container":{"type":"string","title":"Container","description":"Container label used for registration."},"summary":{"additionalProperties":true,"type":"object","title":"Summary","description":"Summary of inserted and skipped items."},"errors":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Errors","description":"Up to 200 validation or upsert errors."}},"additionalProperties":false,"type":"object","required":["ok","container","summary","errors"],"title":"RegisterChatCompletionsResponse"}}}}
```

## The ResponseFormatJsonObject object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."}}}}
```

## The ResponseFormatJsonSchema object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."}}}}
```

## The ResponseFormatText object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."}}}}
```

## The SFTHyperparameters object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"SFTHyperparameters":{"properties":{"max_steps":{"type":"integer","title":"Max Steps"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"lora_dim":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Dim"},"lora_alpha":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Alpha"},"per_device_train_batch_size":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Per Device Train Batch Size"},"gradient_accumulation_steps":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Gradient Accumulation Steps"},"warmup_ratio":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Warmup Ratio"},"optim":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Optim"},"weight_decay":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Weight Decay"},"lr_scheduler_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Lr Scheduler Type"},"learning_rate":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Learning Rate"},"seed":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Seed"},"mode":{"anyOf":[{"items":{"type":"string","enum":["autoregression","classification","regression"]},"type":"array"},{"type":"string","enum":["autoregression","classification","regression"]}],"title":"Mode"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":7},"train_range":{"type":"string","title":"Train Range","default":"500:20000"},"eval_range":{"type":"string","title":"Eval Range","default":"0:500"},"top_c":{"type":"integer","title":"Top C","default":10},"filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"},"max_seq_len":{"type":"integer","title":"Max Seq Len","default":2048},"max_gen_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Gen Tokens"},"target_key":{"type":"string","title":"Target Key","default":"relevance"},"classification_labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Classification Labels"}},"additionalProperties":true,"type":"object","required":["max_steps","lora_targets","lora_dim","lora_alpha","per_device_train_batch_size","gradient_accumulation_steps","warmup_ratio","optim","weight_decay","lr_scheduler_type","learning_rate","seed","mode"],"title":"SFTHyperparameters"}}}}
```

## The SFTMethod object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"SFTMethod":{"properties":{"type":{"type":"string","const":"sft","title":"Type"},"hyperparameters":{"$ref":"#/components/schemas/SFTHyperparameters"}},"type":"object","required":["type","hyperparameters"],"title":"SFTMethod"},"SFTHyperparameters":{"properties":{"max_steps":{"type":"integer","title":"Max Steps"},"lora_targets":{"items":{"type":"string"},"type":"array","title":"Lora Targets"},"lora_dim":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Dim"},"lora_alpha":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Lora Alpha"},"per_device_train_batch_size":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Per Device Train Batch Size"},"gradient_accumulation_steps":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Gradient Accumulation Steps"},"warmup_ratio":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Warmup Ratio"},"optim":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Optim"},"weight_decay":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Weight Decay"},"lr_scheduler_type":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"string"}],"title":"Lr Scheduler Type"},"learning_rate":{"anyOf":[{"items":{"type":"number"},"type":"array"},{"type":"number"}],"title":"Learning Rate"},"seed":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"integer"}],"title":"Seed"},"mode":{"anyOf":[{"items":{"type":"string","enum":["autoregression","classification","regression"]},"type":"array"},{"type":"string","enum":["autoregression","classification","regression"]}],"title":"Mode"},"num_eval_checkpoints":{"type":"integer","title":"Num Eval Checkpoints","default":7},"train_range":{"type":"string","title":"Train Range","default":"500:20000"},"eval_range":{"type":"string","title":"Eval Range","default":"0:500"},"top_c":{"type":"integer","title":"Top C","default":10},"filter":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filter"},"max_seq_len":{"type":"integer","title":"Max Seq Len","default":2048},"max_gen_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Gen Tokens"},"target_key":{"type":"string","title":"Target Key","default":"relevance"},"classification_labels":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Classification Labels"}},"additionalProperties":true,"type":"object","required":["max_steps","lora_targets","lora_dim","lora_alpha","per_device_train_batch_size","gradient_accumulation_steps","warmup_ratio","optim","weight_decay","lr_scheduler_type","learning_rate","seed","mode"],"title":"SFTHyperparameters"}}}}
```

## The StreamOptions object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"StreamOptions":{"properties":{"include_usage":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Include Usage","description":"Include a final chunk with token usage statistics."}},"type":"object","title":"StreamOptions","description":"Options for streaming responses."}}}}
```

## The TextContentPart object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."}}}}
```

## The ToolCall object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ToolCall":{"properties":{"id":{"type":"string","title":"Id","description":"Tool call id."},"type":{"type":"string","const":"function","title":"Type","description":"Tool call type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionCall","description":"Function call details."}},"type":"object","required":["id","function"],"title":"ToolCall","description":"A tool call emitted by the model."},"FunctionCall":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"arguments":{"type":"string","title":"Arguments","description":"JSON-encoded arguments."}},"type":"object","required":["name","arguments"],"title":"FunctionCall","description":"Function call payload inside a tool call."}}}}
```

## The ToolChoiceFunction object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."}}}}
```

## The ToolChoiceFunctionName object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."}}}}
```

## The ToolDefinition object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."}}}}
```

## The TraceContext object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"}}}}
```

## The TraceListItem object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"TraceListItem":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier (`trace.id`)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first request recorded for this trace."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent request recorded for this trace."},"request_count":{"type":"integer","minimum":0,"title":"Request Count","description":"Number of inference log rows recorded for this trace."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this trace."},"spend":{"type":"integer","minimum":0,"title":"Spend","description":"Total spend across all requests in this trace."},"success_count":{"type":"integer","minimum":0,"title":"Success Count","description":"Number of successful requests recorded for this trace."},"error_count":{"type":"integer","minimum":0,"title":"Error Count","description":"Number of errored requests recorded for this trace."}},"additionalProperties":false,"type":"object","required":["id","request_count","container_count","spend","success_count","error_count"],"title":"TraceListItem"}}}}
```

## The TraceListRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"TraceListRes":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/TraceListItem"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"TraceListRes","description":"List response for project-scoped traces."},"TraceListItem":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier (`trace.id`)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first request recorded for this trace."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent request recorded for this trace."},"request_count":{"type":"integer","minimum":0,"title":"Request Count","description":"Number of inference log rows recorded for this trace."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this trace."},"spend":{"type":"integer","minimum":0,"title":"Spend","description":"Total spend across all requests in this trace."},"success_count":{"type":"integer","minimum":0,"title":"Success Count","description":"Number of successful requests recorded for this trace."},"error_count":{"type":"integer","minimum":0,"title":"Error Count","description":"Number of errored requests recorded for this trace."}},"additionalProperties":false,"type":"object","required":["id","request_count","container_count","spend","success_count","error_count"],"title":"TraceListItem"}}}}
```

## The TraceRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"TraceRes":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier (`trace.id`)."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source."},"trace_context":{"anyOf":[{"$ref":"#/components/schemas/TraceContext"},{"type":"null"}],"description":"Most recent normalized trace context stored for this trace."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first request recorded for this trace."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent request recorded for this trace."},"request_count":{"type":"integer","minimum":0,"title":"Request Count","description":"Number of inference log rows recorded for this trace."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this trace."},"error_count":{"type":"integer","minimum":0,"title":"Error Count","description":"Number of errored requests recorded for this trace."},"spans":{"items":{"$ref":"#/components/schemas/TraceSpanRes"},"type":"array","title":"Spans","description":"Grouped spans for this trace."}},"additionalProperties":false,"type":"object","required":["id","request_count","container_count","error_count"],"title":"Trace"},"TraceContext":{"properties":{"id":{"type":"string","title":"Id","description":"External trace identifier used to group requests."},"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Optional span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Optional trace name."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Optional trace source, e.g. langchain."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata associated with the trace."}},"additionalProperties":false,"type":"object","required":["id"],"title":"TraceContext"},"TraceSpanRes":{"properties":{"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Logical span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first attempt recorded for this span."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent attempt recorded for this span."},"attempt_count":{"type":"integer","minimum":0,"title":"Attempt Count","description":"Number of attempts recorded for this logical span."},"inference_log_ids":{"items":{"type":"string"},"type":"array","title":"Inference Log Ids","description":"Chronological list of inference log ids (`task_inference_logs.id`) for this span."},"latest_inference_log_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Inference Log Id","description":"Inference log id for the most recent attempt."},"latest_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Status","description":"Status for the most recent attempt."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this span."}},"additionalProperties":false,"type":"object","required":["attempt_count","container_count"],"title":"TraceSpan"}}}}
```

## The TraceSpanRes object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"TraceSpanRes":{"properties":{"span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Span Id","description":"Logical span identifier within the trace."},"parent_span_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Span Id","description":"Optional parent span identifier."},"first_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"First Seen","description":"Timestamp of the first attempt recorded for this span."},"last_seen":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Seen","description":"Timestamp of the most recent attempt recorded for this span."},"attempt_count":{"type":"integer","minimum":0,"title":"Attempt Count","description":"Number of attempts recorded for this logical span."},"inference_log_ids":{"items":{"type":"string"},"type":"array","title":"Inference Log Ids","description":"Chronological list of inference log ids (`task_inference_logs.id`) for this span."},"latest_inference_log_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Inference Log Id","description":"Inference log id for the most recent attempt."},"latest_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Latest Status","description":"Status for the most recent attempt."},"container_count":{"type":"integer","minimum":0,"title":"Container Count","description":"Number of distinct containers involved in this span."}},"additionalProperties":false,"type":"object","required":["attempt_count","container_count"],"title":"TraceSpan"}}}}
```

## The UpdateContainerReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"UpdateContainerReq":{"properties":{"default_parameters":{"anyOf":[{"$ref":"#/components/schemas/InferenceParams-Input"},{"type":"null"}],"description":"Updated default parameters."},"default_system_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default System Prompt","description":"Updated system prompt."},"default_model":{"anyOf":[{"type":"string","minLength":1,"description":"Resource id or label"},{"type":"null"}],"title":"Default Model","description":"Updated default model id or slug."}},"additionalProperties":false,"type":"object","title":"UpdateContainerReq","description":"Patchable fields for a container."},"InferenceParams-Input":{"properties":{"provider":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Provider","description":"Provider/routing preferences."},"plugins":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Plugins","description":"Plugins."},"route":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Route","description":"Route preference."},"session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session Id","description":"Session id."},"frequency_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Frequency Penalty","description":"Frequency penalty."},"logit_bias":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Logit Bias","description":"Logit bias."},"logprobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Logprobs","description":"Include logprobs."},"top_logprobs":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top Logprobs","description":"Top logprobs."},"max_completion_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Completion Tokens","description":"Max completion tokens."},"max_tokens":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Tokens","description":"Max tokens."},"n":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"N","description":"Number of chat completion choices to generate (OpenAI ``n``)."},"presence_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Presence Penalty","description":"Presence penalty."},"reasoning":{"anyOf":[{"$ref":"#/components/schemas/ReasoningConfig"},{"type":"null"}],"description":"Reasoning config."},"response_format":{"anyOf":[{"$ref":"#/components/schemas/ResponseFormatText"},{"$ref":"#/components/schemas/ResponseFormatJsonSchema"},{"$ref":"#/components/schemas/ResponseFormatJsonObject"},{"type":"null"}],"title":"Response Format","description":"Response format."},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed","description":"Random seed."},"service_tier":{"title":"Service Tier","description":"Service tier hint (auto/default/flex/scale/priority).","type":"string","enum":["auto","default","flex","scale","priority"],"nullable":true},"stop":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Stop","description":"Stop sequences."},"temperature":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Temperature","description":"Temperature."},"tool_choice":{"anyOf":[{"type":"string","enum":["none","auto","required"]},{"$ref":"#/components/schemas/ToolChoiceFunction"},{"type":"null"}],"title":"Tool Choice","description":"Tool choice."},"tools":{"anyOf":[{"items":{"$ref":"#/components/schemas/ToolDefinition"},"type":"array"},{"type":"null"}],"title":"Tools","description":"Tools."},"parallel_tool_calls":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Parallel Tool Calls","description":"Whether the model may emit multiple tool calls in parallel."},"top_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top P","description":"Top p."},"top_k":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top K","description":"Top-k sampling (OpenRouter / Anthropic / vLLM)."},"min_p":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Min P","description":"Min-p sampling cutoff (OpenRouter / vLLM)."},"top_a":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Top A","description":"Top-a sampling cutoff (OpenRouter alternate sampler)."},"repetition_penalty":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Repetition Penalty","description":"Repetition penalty (OpenRouter / non-OpenAI providers)."},"image_config":{"anyOf":[{"$ref":"#/components/schemas/ImageConfig"},{"type":"null"}],"description":"Image output configuration when ``modalities`` includes 'image'."},"modalities":{"anyOf":[{"items":{"type":"string","enum":["text","image","audio"]},"type":"array"},{"type":"null"}],"title":"Modalities","description":"Output modalities to enable (text, image, audio)."},"audio":{"anyOf":[{"$ref":"#/components/schemas/AudioOutputConfig"},{"type":"null"}],"description":"Audio output configuration when ``modalities`` includes 'audio'."},"prediction":{"anyOf":[{"$ref":"#/components/schemas/PredictionContent"},{"type":"null"}],"description":"Predicted output content for faster generation."},"web_search_options":{"anyOf":[{"$ref":"#/components/schemas/WebSearchOptions"},{"type":"null"}],"description":"Web search tool configuration for supported models."},"transforms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Transforms","description":"OpenRouter transform pipeline names (e.g. 'middle-out')."},"preset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Preset","description":"OpenRouter preset name (server-side stored param bundle)."},"bad_words":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Bad Words","description":"Bad words."}},"additionalProperties":false,"type":"object","title":"InferenceParams","description":"Inference-only parameters (no messages, model, stream, etc.)."},"ReasoningConfig":{"properties":{"effort":{"title":"Effort","description":"Reasoning effort level.","type":"string","enum":["none","minimal","low","medium","high","xhigh"],"nullable":true},"max_tokens":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Tokens","description":"Maximum tokens to allocate to reasoning. Used by providers that expose a thinking-token budget (Anthropic, Gemini thinking, some Alibaba Qwen models mapped to `thinking_budget`)."},"exclude":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Exclude","description":"If true, the model still performs reasoning internally but the reasoning tokens are omitted from the response."},"enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Enabled","description":"Explicitly enable or disable reasoning. When true, reasoning runs at provider-default settings unless `effort` or `max_tokens` is set."}},"additionalProperties":false,"type":"object","title":"ReasoningConfig","description":"Reasoning configuration for reasoning models.\n\nMatches OpenRouter's chat-completions reasoning schema. See\nhttps://openrouter.ai/docs/use-cases/reasoning-tokens for provider-specific\nsemantics (effort -> OpenAI/Grok, max_tokens -> Anthropic/Gemini/Qwen)."},"ResponseFormatText":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Format type.","default":"text"}},"type":"object","title":"ResponseFormatText","description":"Plain text response format (default)."},"ResponseFormatJsonSchema":{"properties":{"type":{"type":"string","const":"json_schema","title":"Type","description":"Format type.","default":"json_schema"},"json_schema":{"$ref":"#/components/schemas/JsonSchemaConfig","description":"JSON schema configuration."}},"type":"object","required":["json_schema"],"title":"ResponseFormatJsonSchema","description":"Structured JSON output via a supplied schema."},"JsonSchemaConfig":{"properties":{"name":{"type":"string","title":"Name","description":"Schema name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Schema description."},"schema":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Schema","description":"JSON Schema object."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"JsonSchemaConfig","description":"Configuration for json_schema response format."},"ResponseFormatJsonObject":{"properties":{"type":{"type":"string","const":"json_object","title":"Type","description":"Format type.","default":"json_object"}},"type":"object","title":"ResponseFormatJsonObject","description":"JSON object response format (legacy JSON mode)."},"ToolChoiceFunction":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool choice type.","default":"function"},"function":{"$ref":"#/components/schemas/ToolChoiceFunctionName","description":"Function to call."}},"type":"object","required":["function"],"title":"ToolChoiceFunction","description":"Force the model to call a specific function."},"ToolChoiceFunctionName":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."}},"type":"object","required":["name"],"title":"ToolChoiceFunctionName","description":"Specifies a function name to force-call."},"ToolDefinition":{"properties":{"type":{"type":"string","const":"function","title":"Type","description":"Tool type.","default":"function"},"function":{"$ref":"#/components/schemas/FunctionDefinition","description":"Function definition."}},"type":"object","required":["function"],"title":"ToolDefinition","description":"A tool the model may call."},"FunctionDefinition":{"properties":{"name":{"type":"string","title":"Name","description":"Function name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Description of what the function does."},"parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Parameters","description":"JSON Schema for the function parameters."},"strict":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Strict","description":"Whether to enforce strict schema adherence."}},"type":"object","required":["name"],"title":"FunctionDefinition","description":"Function definition inside a tool."},"ImageConfig":{"properties":{"quality":{"title":"Quality","description":"Render quality.","type":"string","enum":["auto","low","medium","high","standard","hd"],"nullable":true},"size":{"title":"Size","description":"Output dimensions.","type":"string","enum":["auto","256x256","512x512","1024x1024","1024x1536","1024x1792","1536x1024","1792x1024"],"nullable":true},"background":{"title":"Background","description":"Background handling.","type":"string","enum":["auto","transparent","opaque"],"nullable":true},"output_format":{"title":"Output Format","description":"Encoded image format.","type":"string","enum":["png","jpeg","webp"],"nullable":true},"output_compression":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Output Compression","description":"Compression level (0-100) for lossy output formats."},"moderation":{"title":"Moderation","description":"Moderation strictness level.","type":"string","enum":["auto","low"],"nullable":true}},"additionalProperties":true,"type":"object","title":"ImageConfig","description":"Image output configuration (paired with ``modalities: [\"image\"]``).\n\nMirrors OpenAI's gpt-image / chat-image params and OpenRouter's\n``image_config`` passthrough."},"AudioOutputConfig":{"properties":{"voice":{"type":"string","enum":["alloy","ash","ballad","coral","echo","fable","nova","onyx","sage","shimmer","verse"],"title":"Voice","description":"Voice identifier for synthesized audio."},"format":{"type":"string","enum":["wav","mp3","flac","opus","pcm16","aac"],"title":"Format","description":"Audio container format for the response."}},"additionalProperties":true,"type":"object","required":["voice","format"],"title":"AudioOutputConfig","description":"Audio output configuration (paired with ``modalities: [\"audio\"]``)."},"PredictionContent":{"properties":{"type":{"type":"string","const":"content","title":"Type","description":"Prediction type.","default":"content"},"content":{"anyOf":[{"type":"string"},{"items":{"$ref":"#/components/schemas/TextContentPart"},"type":"array"}],"title":"Content","description":"Predicted content (string or list of text parts)."}},"additionalProperties":false,"type":"object","required":["content"],"title":"PredictionContent","description":"Predicted output content (OpenAI predicted outputs)."},"TextContentPart":{"properties":{"type":{"type":"string","const":"text","title":"Type","description":"Content part type.","default":"text"},"text":{"type":"string","title":"Text","description":"Text content."}},"type":"object","required":["text"],"title":"TextContentPart","description":"Text content part in a message."},"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The UpdateEvaluatorReq object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"UpdateEvaluatorReq":{"properties":{"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container label."},"model":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model","description":"Judge model slug."},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prompt","description":"Judge prompt."},"source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source","description":"Code evaluator source."},"requirements":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Requirements","description":"Optional requirements list."},"pass_threshold":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pass Threshold","description":"Optional pass threshold."},"mode":{"title":"Mode","description":"Evaluation mode.","type":"string","enum":["pointwise","reference","pairwise"],"nullable":true},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Evaluator name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Evaluator description."},"api":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Api","description":"API type."},"inference_parameters":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Inference Parameters","description":"Optional inference parameters for judge evaluators (e.g. response_format, temperature)."}},"additionalProperties":false,"type":"object","title":"UpdateEvaluatorReq","description":"Patchable fields for an evaluator."}}}}
```

## The ValidationError object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## The WebSearchApproximateLocation object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```

## The WebSearchOptions object

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"components":{"schemas":{"WebSearchOptions":{"properties":{"search_context_size":{"title":"Search Context Size","description":"How much context the search tool should pull in.","type":"string","enum":["low","medium","high"],"nullable":true},"user_location":{"anyOf":[{"$ref":"#/components/schemas/WebSearchApproximateLocation"},{"type":"null"}],"description":"Approximate user location."}},"additionalProperties":true,"type":"object","title":"WebSearchOptions","description":"Configuration for the built-in web search tool on supported models."},"WebSearchApproximateLocation":{"properties":{"type":{"type":"string","const":"approximate","title":"Type","description":"Location type.","default":"approximate"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country","description":"ISO country code."},"region":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region","description":"State/region name."},"city":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"City","description":"City name."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"IANA timezone."}},"additionalProperties":true,"type":"object","title":"WebSearchApproximateLocation","description":"Approximate user location used to bias web search results."}}}}
```


# REST API

The Maniac API provides openai compatible inference endpoints for interacting with both frontier models and your custom models. This reference details the available endpoints.

## List evaluation runs

> List evaluation runs for the authenticated project. Optionally filter by container and status.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluationRunListResponse":{"properties":{"object":{"type":"string","const":"list","title":"Object","description":"Object type identifier.","default":"list"},"data":{"items":{"$ref":"#/components/schemas/EvaluationRun"},"type":"array","title":"Data","description":"Returned items."},"total":{"type":"integer","minimum":0,"title":"Total","description":"Total number of items available for this resource."}},"additionalProperties":false,"type":"object","required":["data","total"],"title":"EvaluationRunListResponse"},"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluation/runs":{"get":{"tags":["Evaluation"],"summary":"List evaluation runs","description":"List evaluation runs for the authenticated project. Optionally filter by container and status.","operationId":"evaluation_runs_list","parameters":[{"name":"container","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Container ID or label to filter by.","title":"Container"},"description":"Container ID or label to filter by."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter by run status (e.g. 'running', 'completed', 'error').","title":"Status"},"description":"Filter by run status (e.g. 'running', 'completed', 'error')."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRunListResponse"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Create an evaluation run

> Launch an evaluation run. Validates access to the specified container, evaluators, data sources, and models, then dispatches the run through the backend gateway interface.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluationRunReq":{"properties":{"container":{"type":"string","title":"Container","description":"Container id or label."},"evaluators":{"items":{"type":"string"},"type":"array","minItems":1,"title":"Evaluators","description":"Evaluator ids or labels."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Sample-side data source. Omit to default to the container's task logs. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with the specified models."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Ground-truth-side data source. Omit to default to the container's task logs. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with a model."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Baseline-side data source for pairwise evaluation. Use type='dataset' to pull from a dataset, type='container' to pull from task logs, or type='generate' to generate completions with a model."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."},"environment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Environment","description":"Execution environment name (maps to Modal app suffix).","default":"main"}},"additionalProperties":false,"type":"object","required":["container","evaluators"],"title":"EvaluationRunReq","description":"Request body for creating an evaluation run.\n\nEach side of the evaluation (``sample`` and ``ground_truth``) is described\nby a single data-source object whose ``type`` discriminator determines how\ndata is obtained:\n\n- ``\"dataset\"``   — pull from a dataset.\n- ``\"container\"`` — pull from the container's task logs.\n- ``\"generate\"``  — generate completions using one or more models.\n\nBoth fields are optional, but **at least one must be provided**.  When a\nside is omitted it defaults to the top-level container's task logs.  At\nleast one resolved side must not be ``type='generate'`` so there is seed\ninput to evaluate against."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluation/runs":{"post":{"tags":["Evaluation"],"summary":"Create an evaluation run","description":"Launch an evaluation run. Validates access to the specified container, evaluators, data sources, and models, then dispatches the run through the backend gateway interface.","operationId":"evaluation_runs_create","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRunReq"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Get an evaluation run

> Retrieve a single evaluation run by ID within the authenticated project.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Evaluation","description":"Evaluation and evaluator endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"API key in Authorization header using Bearer <token>."}},"schemas":{"EvaluationRun":{"properties":{"created_at":{"type":"string","title":"Created At"},"finished_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Finished At"},"error_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error At"},"status":{"type":"string","title":"Status"},"error":{"anyOf":[{},{"type":"null"}],"title":"Error"},"object":{"type":"string","const":"evaluation.run","title":"Object","description":"Object type.","default":"evaluation.run"},"id":{"type":"string","title":"Id","description":"Evaluation run id (run group id)."},"process_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Process Id","description":"Process id for lifecycle tracking."},"evaluators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Evaluators","description":"Evaluator ids used in this run."},"container":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Container","description":"Container id."},"dataset_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset Id","description":"Dataset id (if a dataset was used)."},"sample":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Sample","description":"Resolved sample-side data source."},"ground_truth":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Ground Truth","description":"Resolved ground-truth-side data source."},"baseline":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/DatasetDataSource"},{"$ref":"#/components/schemas/ContainerDataSource"},{"$ref":"#/components/schemas/GenerateDataSource"}],"discriminator":{"propertyName":"type","mapping":{"container":"#/components/schemas/ContainerDataSource","dataset":"#/components/schemas/DatasetDataSource","generate":"#/components/schemas/GenerateDataSource"}}},{"type":"null"}],"title":"Baseline","description":"Resolved baseline-side data source for pairwise evaluation."},"results":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunResults-Output"},{"type":"null"}],"description":"Evaluation results (populated on completion)."},"metrics":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metrics","description":"Evaluation metrics (populated on completion)."},"config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Config","description":"Run configuration as submitted."},"spend":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spend","description":"Estimated spend."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Optional metadata."}},"type":"object","required":["created_at","status","id"],"title":"EvaluationRun","description":"Response model for an evaluation run."},"DatasetDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"dataset","title":"Type"},"dataset":{"type":"string","minLength":1,"title":"Dataset","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","dataset"],"title":"DatasetDataSource"},"ContainerDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"container","title":"Type"},"container":{"type":"string","minLength":1,"title":"Container","description":"Resource id or label"}},"additionalProperties":false,"type":"object","required":["type","container"],"title":"ContainerDataSource"},"GenerateDataSource":{"properties":{"range":{"anyOf":[{"type":"string","pattern":"^\\d+:\\d+$","description":"Range to evaluate, as 'start:end' (e.g. '0:200')"},{"type":"null"}],"title":"Range","default":"0:100"},"type":{"type":"string","const":"generate","title":"Type","default":"generate"},"models":{"items":{"type":"string","minLength":1,"description":"Resource id or label"},"type":"array","minItems":1,"title":"Models","description":"Model ids or slugs to generate with."}},"additionalProperties":false,"type":"object","required":["models"],"title":"GenerateDataSource","description":"Data source that generates completions via one or more models."},"EvaluationRunResults-Output":{"properties":{"overall":{"anyOf":[{"$ref":"#/components/schemas/EvaluationRunOverallResults"},{"type":"null"}],"description":"Aggregate scores across all models and evaluators."},"metadata":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Metadata","description":"Additional result metadata."},"per_model":{"anyOf":[{"items":{"$ref":"#/components/schemas/EvaluationRunPerModelResults"},"type":"array"},{"type":"null"}],"title":"Per Model","description":"Per-model result breakdowns."},"launch_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Count","description":"Number of model launches in this run."}},"additionalProperties":true,"type":"object","title":"EvaluationRunResults","description":"Typed representation of the evaluation run results payload."},"EvaluationRunOverallResults":{"properties":{"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score across all evaluators."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy across all evaluators."}},"additionalProperties":true,"type":"object","title":"EvaluationRunOverallResults","description":"Aggregated scores across all models and evaluators."},"EvaluationRunPerModelResults":{"properties":{"model":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Model","description":"Model configuration used (sample and ground-truth generation models)."},"per_eval":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/EvaluationRunPerEvalResults"},"type":"object"},{"type":"null"}],"title":"Per Eval","description":"Results keyed by evaluator UUID."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score for this model."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this model."},"launch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Launch Index","description":"Index of this model launch."},"launch_call_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Launch Call Id","description":"Modal function call id for this launch."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerModelResults","description":"Results for a single model within an evaluation run."},"EvaluationRunPerEvalResults":{"properties":{"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy","description":"Accuracy ratio."},"avg_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Score","description":"Average score."},"num_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Total","description":"Total number of evaluation samples."},"num_errors":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Errors","description":"Number of samples that errored."},"num_failed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Failed","description":"Number of samples that failed."},"num_passed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Passed","description":"Number of samples that passed."},"num_scored":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Scored","description":"Number of samples that were scored."},"num_missing":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Missing","description":"Number of samples with missing data."},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy","description":"Average accuracy for this evaluator."},"break_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Break Reason","description":"Why evaluation stopped (e.g. 'expected_count_reached')."},"expected_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Expected Count","description":"Expected sample count for this evaluator."}},"additionalProperties":true,"type":"object","title":"EvaluationRunPerEvalResults","description":"Per-evaluator breakdown within a single model run."},"ErrorResponse":{"properties":{"error":{"$ref":"#/components/schemas/ManiacError","description":"Error payload."}},"additionalProperties":false,"type":"object","required":["error"],"title":"ErrorResponse","description":"Response body for errors."},"ManiacError":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code."},"message":{"type":"string","title":"Message","description":"Human-readable error message."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional error details."}},"additionalProperties":false,"type":"object","required":["code","message"],"title":"ManiacError","description":"Standard Maniac API error envelope.\n\nThis matches the shape already used by v2 auth (`detail={\"error\": {...}}`)."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}},"paths":{"/v1/evaluation/runs/{run_id}":{"get":{"tags":["Evaluation"],"summary":"Get an evaluation run","description":"Retrieve a single evaluation run by ID within the authenticated project.","operationId":"evaluation_runs_retrieve","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","title":"Run Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EvaluationRun"}}}},"400":{"description":"Bad Request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"409":{"description":"Conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}},"429":{"description":"Too Many Requests","headers":{"X-RateLimit-Limit":{"description":"Request limit per window.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Remaining requests in current window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp when the rate limit resets.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"501":{"description":"Not Implemented","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"503":{"description":"Upstream Unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}
```

## Healthz

> Health check endpoint for load balancers and uptime monitors.

```json
{"openapi":"3.1.0","info":{"title":"Maniac Inference Gateway API","version":"1.0.0"},"tags":[{"name":"Health","description":"Health and status endpoints."}],"servers":[{"url":"https://platform.maniac.ai","description":"The Maniac API"}],"security":[],"paths":{"/healthz":{"get":{"tags":["Health"],"summary":"Healthz","description":"Health check endpoint for load balancers and uptime monitors.","operationId":"healthz_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}}},"components":{"schemas":{"HealthResponse":{"properties":{"ok":{"type":"boolean","title":"Ok"}},"additionalProperties":false,"type":"object","required":["ok"],"title":"HealthResponse","description":"Health check response."}}}}
```


# Vercel AI SDK

The Maniac platform lets you collect LLM completions for training and evaluation. This guide walks through two ways to integrate Maniac into a project that uses the [Vercel AI SDK](https://sdk.vercel.ai/docs):

* **Option A -- OpenAI-compatible proxy:** Maniac acts as a proxy between your app and the underlying model. Inference and data collection happen in a single call with zero extra wiring.
* **Option B -- Register completions:** You run inference through any provider you like (Anthropic, OpenAI, etc.) and then POST the completion to Maniac after the fact. This is more flexible and works with streaming, custom pipelines, or providers that Maniac does not proxy.

Both options start the same way: you create a **container** on the Maniac platform.

***

### Prerequisites

{% hint style="info" %}
Before you begin, make sure you have:

* A **Maniac API key** (set it as `MANIAC_API_KEY` in your environment).
* **Node.js 18+** and an existing Vercel AI SDK project (or a new one).
* The following packages installed:
  * `ai` (the Vercel AI SDK core)
  * `@ai-sdk/openai-compatible` (needed for Option A)
  * A provider package such as `@ai-sdk/anthropic` or `@ai-sdk/openai` (needed for Option B)
    {% endhint %}

***

### Step 1 -- Create a Maniac Container

A **container** is a logical namespace on the Maniac platform that is tied to a specific base model. Every completion you send to that container -- whether proxied or registered -- is stored and can later be used for fine-tuning, evaluation, or analytics.

You only need to create a container once. After that, you reference it by its `label` in all subsequent calls.

```typescript
async function createContainer({ label, initialModel, ...rest }) {
  const headers = {
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.MANIAC_API_KEY}`,
  };
  const res = await fetch(`${"https://platform.maniac.ai/api/v1"}/containers`, {
    method: "POST",
    headers,
    body: JSON.stringify({
      label,
      initial_model: initialModel,
      ...rest,
    }),
  });
  const data = await res.json();
  return data;
}
```

{% hint style="warning" %}
The `label` must be unique within your project. The `initialModel` field should match the model you intend to use for inference (e.g. `anthropic/claude-sonnet-4.5`, `openai/gpt-4o-mini`). Maniac uses this to configure the container's proxy.
{% endhint %}

***

### Step 2 -- Choose an Integration Path

The sections below cover each option in detail. You can mix and match -- for example, use the proxy in development for convenience and switch to registered completions in production for more control.

***

### Option A: OpenAI-Compatible Proxy

This is the simplest integration path. The Vercel AI SDK's `createOpenAICompatible` helper lets you point your model calls at any OpenAI-compatible endpoint. When you point it at Maniac, every request is forwarded to the underlying model **and** the completion is automatically recorded in your container.

The flow looks like this:

1. Your app calls `generateText` (or `streamText`) with the Maniac provider.
2. Maniac forwards the request to the base model configured on the container.
3. The model response is returned to your app **and** stored on the platform.

```typescript
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateText } from "ai";

await createContainer({
  label: "my-container",
  initialModel: "anthropic/claude-sonnet-4.5",
});

const maniac = createOpenAICompatible({
  name: "maniac",
  apiKey: process.env.MANIAC_API_KEY,
  baseURL: "https://platform.maniac.ai/api/v1",
});

const response = await generateText({
  model: maniac("maniac:my-container"),
  prompt: "Hello, world!",
});
```

{% hint style="info" %}
The model string follows the format `maniac:<container-label>`. The `maniac:` prefix tells the platform to route the request to the container you created, which already knows which underlying model to call.
{% endhint %}

***

### Option B: Register Completions

If the OpenAI-compatible proxy does not fit your use case -- for example, you need to call a provider directly, use streaming, or run completions through a custom pipeline -- you can still feed data into a Maniac container by **registering completions** after the fact.

The registration endpoint is:

```
POST https://platform.maniac.ai/api/v1/chat/completions/register
```

Each item you register must include an `input` and an `output`, both formatted according to the [OpenAI Chat Completions](https://platform.openai.com/docs/api-reference/chat) schema. This means:

* **`input`** contains a `messages` array (each message has a `role` and `content`).
* **`output`** contains a `choices` array (each choice has a `message` with `role` and `content`).

Here is a minimal helper function:

```typescript
async function registerCompletion({
  container,
  input,
  output,
}: {
  container: string;
  input: any;
  output: any;
}) {
  fetch(`https://platform.maniac.ai/api/v1/chat/completions/register`, {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: `Bearer ${process.env.MANIAC_API_KEY}`,
    },
    body: JSON.stringify({ container, items: [{ input, output }] }),
  });
}
```

{% hint style="info" %}
The `items` field is an array, so you can batch multiple completions in a single request if needed.
{% endhint %}

There are several ways to hook this into the Vercel AI SDK. The two most common patterns are **middleware** and **`onFinish` callbacks**.

#### Using Middleware

The Vercel AI SDK supports [language-model middleware](https://sdk.vercel.ai/docs/ai-sdk-core/middleware) -- functions that wrap every call to a model. This is the cleanest approach when you want *every* completion to be registered automatically, regardless of where in your codebase the call originates.

The middleware below intercepts `generateText` calls via `wrapGenerate`. After the underlying model returns a result, it extracts the text content, formats it into the OpenAI chat-completions schema, and fires off a registration request in the background.

```typescript
export function maniacRegistrationMiddleware({
  container,
}: {
  container: string;
}) {
  return {
    specificationVersion: "v3",
    wrapGenerate: async ({ doGenerate, params }) => {
      const result = await doGenerate();

      const input = { messages: params.prompt };

      const text = result.content
        .filter((c: any) => c.type === "text")
        .map((c: any) => c.text)
        .join("");

      const output = {
        choices: [{ message: { role: "assistant", content: text } }],
      };

      if (text) registerCompletion({ container, input, output });

      return result;
    },
  };
}
```

To use it, wrap your model with `wrapLanguageModel` and pass in the middleware. From that point on, every `generateText` call made with this wrapped model will automatically register completions to your container.

```typescript
import { wrapLanguageModel, generateText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";
import { maniacRegistrationMiddleware } from "./middleware";

const model = wrapLanguageModel({
  model: anthropic("claude-sonnet-4.5"),
  middleware: maniacRegistrationMiddleware({
    container: "my-container",
  }),
});

const { text } = await generateText({
  model,
  prompt: "Hello!",
});

console.log(text);
```

#### Using `onFinish`

If you only need to register completions in one or two places, the `onFinish` callback is a lighter-weight alternative that avoids the overhead of setting up middleware. The callback fires once the model has finished generating, giving you access to the final text.

```typescript
import { generateText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";

prompt = "Hello!";

const { text } = await generateText({
  model: anthropic("claude-sonnet-4.5"),
  prompt,
  onFinish: async ({ text }) => {
    await registerCompletion({
      container: "my-container",
      input: { messages: [{ role: "user", content: prompt }] },
      output: { choices: [{ message: { role: "assistant", content: text } }] },
    });
  },
});
```

***

### Which option should I use?

{% tabs %}
{% tab title="Option A -- Proxy" %}
**Best for:** Quick setup, prototyping, or any situation where you are happy to route inference through Maniac.

* Zero extra code beyond `createOpenAICompatible`.
* Completions are captured automatically.
* You are limited to models and providers that Maniac supports as a proxy.
  {% endtab %}

{% tab title="Option B -- Register" %}
**Best for:** Production workloads, custom pipelines, or when you need full control over the inference provider.

* Works with *any* model or provider.
* Supports streaming via `onFinish` or middleware.
* Requires a small amount of extra wiring (the `registerCompletion` call).
* Can batch-register multiple completions in a single request.
  {% endtab %}
  {% endtabs %}


