Skip to content

feat(openrouter/aion-labs/aion-3.0-mini): add new models [bot]#1709

Open
models-bot[bot] wants to merge 2 commits into
mainfrom
bot/add-openrouter-aion-labs-aion-3.0-mini-20260708-000704
Open

feat(openrouter/aion-labs/aion-3.0-mini): add new models [bot]#1709
models-bot[bot] wants to merge 2 commits into
mainfrom
bot/add-openrouter-aion-labs-aion-3.0-mini-20260708-000704

Conversation

@models-bot

@models-bot models-bot Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Auto-generated by model-addition-agent for openrouter/aion-labs/aion-3.0-mini.


Note

Low Risk
Single new YAML model definition with no runtime or auth changes; misconfigured costs or limits would only affect routing/billing metadata.

Overview
Adds a new OpenRouter provider definition for aion-labs/aion-3.0-mini, registering it as a serverless chat model with 131072 context and 32768 max output tokens.

The entry includes regional token pricing (including prompt cache read), text-only modalities, thinking: true, and capability flags for function calling, JSON output, prompt caching, and tool choice, with a source link to OpenRouter.

Reviewed by Cursor Bugbot for commit 61276f4. Bugbot is set up for automated code reviews on this repo. Configure here.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want higher recall? High effort reviews run extra passes and find more bugs. A team admin can switch effort levels in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 69bfc93. Configure here.

- tool_choice
limits:
context_window: 131072
max_output_tokens: 32768

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing limits max_tokens field

Medium Severity

The new entry sets limits.max_output_tokens to 32768 but omits limits.max_tokens, unlike every other OpenRouter model with the same output cap. With openrouter/default.yaml still bounding the max_tokens request param at 4096, consumers that rely on limits.max_tokens can treat this model as capped far below its advertised 32K output.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 69bfc93. Configure here.

@github-actions

github-actions Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

/test-models

@harshiv-26

Copy link
Copy Markdown
Collaborator

Gateway test results

  • Total: 8
  • Passed: 5
  • Failed: 3
  • Validation failed: 0
  • Errored: 0
  • Skipped: 0
  • Success rate: 62.5%
Provider Model Scenarios
openrouter aion-labs/aion-3.0-mini success: tool-call:text-text:stream, params:text-text:stream, params:text-text, reasoning:text-text, reasoning:text-text:stream

failure: tool-call:text-text, json-output:text-text, json-output:text-text:stream
Failures (3)

openrouter/aion-labs/aion-3.0-mini — tool-call:text-text (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpqb62a92c/snippet.py", line 27, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.AuthenticationError: Error code: 401 - {'status': 'failure', 'message': 'Unauthorized: Forbidden: Invalid token', 'error': {'message': 'Unauthorized: Forbidden: Invalid token', 'type': 'Error', 'code': '401'}, 'error_origin_level': 'authentication'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location.",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city name, e.g. London",
                    },
                },
                "required": ["location"],
                "additionalProperties": False,
            },
            "strict": True,
        },
    },
]

response = client.chat.completions.create(
    model="test-v2-openrouter/aion-labs-aion-3.0-mini",
    messages=[
        {"role": "user", "content": "Use the get_weather tool to check the weather in London. You must call the tool, do not respond with plain text."},
    ],
    tools=tools,
    tool_choice="auto",
    stream=False,
)
_message = response.choices[0].message
if _message.tool_calls:
    for _tc in _message.tool_calls:
        print(f"Function: {_tc.function.name}")
        print(f"Arguments: {_tc.function.arguments}")
else:
    print(_message.content)

if not _message.tool_calls or len(_message.tool_calls) == 0:
    raise Exception("VALIDATION FAILED: tool-call - no tool calls in response")
print("VALIDATION: tool-call SUCCESS")

openrouter/aion-labs/aion-3.0-mini — json-output:text-text (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpz_tgbiu5/snippet.py", line 5, in <module>
    response = client.chat.completions.create(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_utils/_utils.py", line 286, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/resources/chat/completions/completions.py", line 1147, in create
    return self._post(
           ^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1259, in post
    return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/openai/_base_client.py", line 1047, in request
    raise self._make_status_error_from_response(err.response) from None
openai.AuthenticationError: Error code: 401 - {'status': 'failure', 'message': 'Unauthorized: Forbidden: Invalid token', 'error': {'message': 'Unauthorized: Forbidden: Invalid token', 'type': 'Error', 'code': '401'}, 'error_origin_level': 'authentication'}
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/aion-labs-aion-3.0-mini",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=False,
)
import json as _json

_content = response.choices[0].message.content
print(_content)

if not _content:
    raise Exception("VALIDATION FAILED: json-output - response content is empty")

_json.loads(_content)
print("VALIDATION: json-output SUCCESS")

openrouter/aion-labs/aion-3.0-mini — json-output:text-text:stream (failure)

Error
Traceback (most recent call last):
  File "/tmp/tmpr9isibck/snippet.py", line 26, in <module>
    _json.loads(_accumulated)
  File "/usr/local/lib/python3.11/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Code snippet
from openai import OpenAI

client = OpenAI(api_key="***", base_url="https://internal.devtest.truefoundry.tech/api/llm")

response = client.chat.completions.create(
    model="test-v2-openrouter/aion-labs-aion-3.0-mini",
    messages=[
        {"role": "user", "content": "List 3 colors with their hex codes in JSON."},
    ],
    response_format={"type": "json_object"},
    stream=True,
)
import json as _json

_accumulated = ""
for chunk in response:
    if chunk.choices and len(chunk.choices) > 0:
        delta = chunk.choices[0].delta
        if delta.content is not None:
            _accumulated += delta.content
            print(delta.content, end="", flush=True)

if not _accumulated:
    raise Exception("VALIDATION FAILED: json-output stream - no content received")

_json.loads(_accumulated)
print("\nVALIDATION: json-output stream SUCCESS")
Output
```json
{
  "colors": [
    {
      "name": "Red",
      "hex": "#FF0000"
    },
    {
      "name": "Green",
      "hex": "#00FF00"
    },
    {
      "name": "Blue",
      "hex": "#0000FF"
    }
  ]
}

</details>

</details>

<details>
<summary>Successes (5)</summary>

**`openrouter/aion-labs/aion-3.0-mini` — tool-call:text-text:stream (success)**

<details><summary>Output</summary>

{"location": "London"}
VALIDATION: tool-call stream SUCCESS


</details>

**`openrouter/aion-labs/aion-3.0-mini` — params:text-text:stream (success)**

<details><summary>Output</summary>

Paris


</details>

**`openrouter/aion-labs/aion-3.0-mini` — params:text-text (success)**

<details><summary>Output</summary>

The capital of France is Paris.


</details>

**`openrouter/aion-labs/aion-3.0-mini` — reasoning:text-text (success)**

<details><summary>Output</summary>

To evaluate (3^{3^{3^3}}), it's crucial to follow the standard mathematical convention for exponentiation: exponentiation is right-associative,
... (truncated, 1959 chars omitted)


</details>

**`openrouter/aion-labs/aion-3.0-mini` — reasoning:text-text:stream (success)**

<details><summary>Output</summary>

To calculate (3^{3^{3^3}}), we must first understand the order of operations for exponentiation. Exponentiation is right-associative, meaning th
... (truncated, 1689 chars omitted)


</details>

</details>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant