# 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"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.maniac.ai/api-reference/containers.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
