Skip to content

Meta Muse Glimmer

Muse Glimmer 30B is Meta's open-weight model released under Apache 2.0. It is tuned for long-running agent loops that make progress by calling tools. It is served over /v1/chat/completions.

ModelContextInput / Cache Read / Output ($/1M)
meta/muse-glimmer-30b131,0720.35 / 0.04 / 1.50
Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "meta/muse-glimmer-30b",
"messages": [
{ "role": "user", "content": "Find the bug in this function." }
],
"max_tokens": 2048
}'

Muse Glimmer reasons before answering on every request. You tune that effort with the reasoning_effort field; seven values are valid: none, minimal, low, medium, high, xhigh, max.

reasoning_effort: "none" is accepted by this model but does not turn reasoning off. It is simply the lowest setting; the model still produces a reasoning trace at that level. Reasoning tokens are returned inside completion_tokens and billed at the output rate, so you pay for reasoning even when you send none. If you need a model that produces no reasoning at all, choose a non-reasoning model.

Effort can also be given as a suffix on the model id:

meta/muse-glimmer-30b -> default
meta/muse-glimmer-30b:none -> lowest setting (still reasons)
meta/muse-glimmer-30b:minimal -> low effort
meta/muse-glimmer-30b:high -> high effort
meta/muse-glimmer-30b:max -> highest effort
Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "meta/muse-glimmer-30b",
"messages": [{ "role": "user", "content": "What is 17 * 23?" }],
"reasoning_effort": "low"
}'

Sending an invalid level rejects the request with 400, and the error message lists the supported levels. For the general behaviour of reasoning effort, see reasoning effort.

Because reasoning tokens are counted inside completion_tokens, they also consume the max_tokens budget. When that budget is small, the reasoning trace eats all of it and the content comes back empty:

max_tokensfinish_reasonReturned content
10lengthempty
50lengthempty
200stopAnkara

Do not set max_tokens low even when you expect a short answer; give this model at least 150-200. If you are migrating from a non-reasoning model and your max_tokens is something like 50, this is why the responses come back empty. reasoning_effort: "none" does not fully solve it, because a reasoning trace is still produced at that level.

The model supports tool/function calling and accepts every tool_choice value: the default (auto), required, none, and a named function choice.

Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "meta/muse-glimmer-30b",
"messages": [{ "role": "user", "content": "What is the weather in Istanbul?" }],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the current weather for a city",
"parameters": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
}
],
"tool_choice": "required"
}'

Responses that carry a tool call always report finish_reason as tool_calls.

Alongside text the model accepts image and video input. Images can be sent as a base64 data URI or as a remote https URL.

Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "meta/muse-glimmer-30b",
"messages": [
{
"role": "user",
"content": [
{ "type": "text", "text": "What is in this image?" },
{ "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } }
]
}
]
}'

Video uses a video_url content part:

{
"type": "video_url",
"video_url": { "url": "https://example.com/clip.mp4" }
}

This model does not accept audio input; requests containing input_audio are rejected with 400. PDF/document input is not supported either. For work that needs document reading, see Meta Muse Spark.

The model supports both json_object and schema-conforming json_schema output.

Terminal window
curl "$LLMTR_BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer llmtr-your_key" \
-H "Content-Type: application/json" \
-d '{
"model": "meta/muse-glimmer-30b",
"messages": [{ "role": "user", "content": "Tell me about Ankara." }],
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "city_info",
"schema": {
"type": "object",
"properties": {
"cityName": { "type": "string" },
"populationMillions": { "type": "number" }
},
"required": ["cityName", "populationMillions"],
"additionalProperties": false
}
}
}
}'

Repeating the same prompt prefix engages the cache, and those tokens are billed at $0.04 / 1M. The number of cached tokens is returned in prompt_tokens_details.cached_tokens. The cache is a discount, not a guarantee; the hit rate depends on prompt length and traffic.

The context window is 131,072 tokens, and both the prompt and the output to be generated count against that ceiling. Requests that exceed it are rejected with 400.

  • Audio input is not supported.
  • PDF/document input is not supported.
  • Reasoning cannot be disabled; none is only the lowest setting.
  • The model is not hosted in Turkey; requests are processed on third-party infrastructure abroad.