Skip to main content
ShuttleAI now supports advanced reasoning and thinking capabilities across various models from providers like OpenAI and Anthropic. This includes native extended reasoning for newer models (e.g., gpt-5 from OpenAI or claude-4.5-sonnet from Anthropic) via the reasoning_effort field in the /v1/chat/completions API. For models that do not natively support extended reasoning, such as shuttle-3.5 or older models from other providers, you can instruct the AI through prompts to perform reasoning within <think></think> tags. ShuttleAI automatically parses these tags into a separate reasoning_content field in the response, distinct from the main content.
The reasoning_effort field enhances model performance by applying deliberate, extended thinking natively. Prompt-based <think></think> tags work with any model but rely on prompting and parsing, which may not be as effective as native support. The default value for reasoning_effort is none. Even if reasoning_effort is set to none, prompt-based reasoning with <think></think> will still function if included in your instructions.

What is Reasoning Effort?

The reasoning_effort field allows you to control the level of deliberate reasoning a model applies when generating responses. This is particularly useful for complex queries requiring step-by-step thinking. Supported values are:
  • none: No additional reasoning effort (default).
  • minimal: Light reasoning for simple tasks.
  • low: Basic extended thinking.
  • medium: Moderate reasoning for balanced performance.
  • high: Intensive reasoning for challenging problems.
This field is only effective for models that natively support extended reasoning, such as claude-3.7-sonnet, claude-4.5-sonnet, gpt-5, and similar newer models. For these models, no special prompting is required— the reasoning is handled internally and returned in the reasoning_content field. Refer to the OpenAPI schema for the /v1/chat/completions endpoint:
reasoning_effort:
  type: string
  enum: [none, minimal, low, medium, high]
  nullable: true
  description: Specifies the amount of deliberate reasoning the model should apply.

Using Tags for Models Without Native Support

For models like shuttle-3.5 or older OpenAI/Anthropic models that lack built-in extended reasoning, you can achieve similar results by including instructions in your system or user prompt. Direct the model to enclose its reasoning in <think></think> tags before providing the final answer. ShuttleAI will automatically extract this into reasoning_content, keeping the main content clean. This approach does not require the reasoning_effort field and works even if it’s set to none. However, the quality may vary compared to native reasoning in advanced models.

Supported Models

  • Native Reasoning Effort Support: Models like gpt-5 (OpenAI), claude-3.7-sonnet, claude-4.5-sonnet (Anthropic), and equivalents from other providers.
  • Prompt-Based Support: All models, including shuttle-3.5 and older versions from OpenAI, Anthropic, etc.
Check the model documentation or availability in the API for the latest support details.

Example: Prompt-Based Reasoning with Tags

This example uses shuttle-3.5 without reasoning_effort. The system prompt instructs the model to reason within tags.
curl https://api.shuttleai.com/v1/chat/completions \
  -H "Authorization: Bearer $SHUTTLEAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "shuttle-3.5",
    "messages": [
        {
            "role": "system",
            "content": "No matter how simple or complex the request, always go through an out loud reasoning process in first person as the assistant to answer the user request properly. Encase all reasoning in <think></think> tags, leave final answer outside of tags."
        },
        {
            "role": "user",
            "content": "hey"
        }
    ]
  }'
Sample Response:
{
    "id": "chatcmpl-c771158c1d8f4a40aade4c4701363f5c",
    "object": "chat.completion",
    "created": 1763621026,
    "model": "shuttle-3.5",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\n\nHi there! How are you doing today?",
                "reasoning_content": "The user has simply said \"hey\" which seems like a greeting. In response, I should:\n1. Recognize this as an informal greeting\n2. Respond in a friendly and welcoming manner\n3. Be open to further conversation or potential follow-up requests"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 59,
        "completion_tokens": 66,
        "total_tokens": 125,
        "completion_tokens_details": {
            "reasoning_tokens": 56
        }
    }
}

Example: Native Reasoning with reasoning_effort

This example uses claude-3.7-sonnet with reasoning_effort set to low.
curl https://api.shuttleai.com/v1/chat/completions \
  -H "Authorization: Bearer $SHUTTLEAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3.7-sonnet",
    "messages": [
        {
            "role": "user",
            "content": "hey"
        }
    ],
    "reasoning_effort": "low"
  }'
Sample Response:
{
    "id": "chatcmpl-23752c67a6cd4999af4414df03f8bc8e",
    "object": "chat.completion",
    "created": 1763621449,
    "model": "claude-3-7-sonnet-20250219",
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "Hello there! How are you today? I'm your AI assistant, and I'm here to help with information, answer questions, or just chat. What can I do for you?",
                "reasoning_content": "The person has sent a very simple greeting message \"hey\". I should respond with a friendly and welcoming message. I'll keep it casual but also let them know that I'm here to help with any questions or tasks they might have."
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 7,
        "completion_tokens": 86,
        "total_tokens": 93,
        "completion_tokens_details": {
            "reasoning_tokens": 47
        }
    }
}
For optimal results on complex tasks, use higher reasoning_effort levels with supported models. Combine with tools or multi-turn conversations for enhanced capabilities.
For more advanced usage, explore our API reference or GitHub examples.