Qwen3.5 Plus

qwen3.5-plus

Use the Qwen3.5 Plus API for chat, coding, and reasoning. Send conversation messages and include tool definitions on supported routes. Build developer assistants for code review, debugging, and implementation. Compare the available provider routes, request examples, and usage prices on OpenAny.

Published price
From $0.090 / 1M tokens
Billing unit
/ 1M tokens
Context / Max output
1000K / 64K
Listed routes
1
Base URL
https://api.openany.si/v1
POST
/v1/chat/completions
Authentication
Authorization: Bearer $OPENANY_API_KEY

Provider

Published price $0.090 / 1M tokens

Request parameters

ParameterType / rangeDefault valueRequiredDescription
messagesarray—YesThe conversation messages
modelstring—YesThe model to use
audioobject—NoOutput audio configuration for Qwen-Omni models. Requires modalities to include audio.
audio.formatstring · wav—NoOutput audio format. Only wav is supported.
audio.voicestring—NoVoice used for output audio.
enable_code_interpreterbooleanfalseNoWhether to enable the code interpreter feature. This is not a standard OpenAI parameter.
enable_searchbooleanfalseNoWhether to enable web search. This is not a standard OpenAI parameter.
enable_thinkingboolean—NoWhether to enable thinking mode for supported hybrid thinking models. Reasoning content is returned in reasoning_content.
frequency_penaltynumber · -2 ~ 20NoPenalty for repeated tokens
logprobsbooleanfalseNoWhether to return log probabilities for output tokens. Reasoning content does not include log probabilities.
max_completion_tokensinteger · >= 1—NoMaximum visible completion tokens
max_tokensinteger · >= 1—NoMaximum completion tokens
messages[].contentobject—NoMessage content. Can be text or model-specific multimodal content.
messages[].reasoning_contentstring—NoHistorical reasoning content from assistant messages. Required unchanged when using preserved thinking for supported models.
messages[].rolestring · system | user | assistant | tool—NoMessage role in the conversation.
modalitiesarray—NoOutput modalities. Applies only to Qwen-Omni models. Valid values include ["text"] and ["text","audio"].
ninteger · 1 ~ 1281NoNumber of choices to generate
parallel_tool_callsbooleanfalseNoWhether to enable parallel tool calling.
presence_penaltynumber · -2 ~ 20NoPenalty for previously used tokens
preserve_thinkingbooleanfalseNoWhether to append historical reasoning_content from assistant messages to the model input for supported models.
reasoning_effortstring · low | medium | high | xhigh | max | minimal | none—NoControls reasoning effort. Qwen3.8-Max-Preview supports low, medium, and xhigh. max/high map to xhigh, minimal maps to low, and none maps to enable_thinking=false.
response_formatobject—NoFormat constraint for the response
response_format.json_schemaobject—NoJSON Schema configuration. Required when response_format.type is json_schema.
response_format.json_schema.descriptionstring—NoDescription of the schema purpose.
response_format.json_schema.namestring—NoUnique schema name. Supports letters, numbers, underscores, and hyphens. Maximum length: 64 characters.
response_format.json_schema.schemaobject—NoJSON Schema object defining the output data structure.
response_format.json_schema.strictbooleanfalseNoWhether the model must strictly follow the schema constraints.
response_format.typestring · text | json_object | json_schema—NoResponse format type.
routeobject—NoOpenAny route configuration, including provider and other routing parameters
route_modestring—NoThe mode for routing the request
search_optionsobject—NoWeb search strategy. Effective only when enable_search is true.
search_options.enable_search_extensionbooleanfalseNoWhether to enable domain-specific search.
search_options.forced_searchbooleanfalseNoWhether to force web search instead of letting the model decide.
search_options.search_strategystring · turbo | max | agent | agent_maxturboNoSearch scale strategy. turbo balances speed and effectiveness; max is more comprehensive; agent and agent_max perform multi-round retrieval for supported models.
seedinteger—NoSeed for deterministic sampling
stopstring | array—NoSequences that stop generation
streambooleanfalseNoWhether to stream the response
stream_optionsobject—NoStreaming options. Effective only when stream is true.
stream_options.include_usagebooleanfalseNoWhether to include token usage information in the final streaming chunk.
temperaturenumber · 0 ~ 21NoSampling temperature
thinking_budgetinteger—NoMaximum number of tokens for the thinking process. Applies to supported Qwen reasoning models.
tool_choicestring | object · none | auto | required—NoTool selection policy: string modes none, auto, or required, or an object selecting a specific tool
tool_streambooleanfalseNoControls streaming behavior for complex tool arguments when stream is true. This is not a standard OpenAI parameter.
toolsarray—NoTools available to the model
tools[].functionobject—NoFunction tool definition.
tools[].function.descriptionstring—NoFunction description used by the model to decide when and how to call the tool.
tools[].function.namestring—NoFunction name. Supports letters, digits, underscores, and hyphens. Up to 64 tokens.
tools[].function.parametersobject—NoFunction parameters described with JSON Schema.
tools[].typestring · function—NoTool type. Currently only function is supported.
top_kinteger · >= 0—NoNumber of candidate tokens used for sampling. If null or greater than 100, top_k is disabled and only top_p takes effect. This is not a standard OpenAI parameter.
top_logprobsinteger · 0 ~ 50NoNumber of most likely candidate tokens to return at each generation step. Effective only when logprobs is true.
top_pnumber · 0 ~ 11NoNucleus sampling probability
vl_high_resolution_imagesbooleanfalseNoWhether to increase the maximum pixel limit for input images. Applies to supported Qwen VL models. This is not a standard OpenAI parameter.

Request example

curl 'https://api.openany.si/v1/chat/completions' \
  -H "Authorization: Bearer $OPENANY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "messages": [
    {
      "content": "hello",
      "role": "user"
    }
  ],
  "model": "qwen3.5-plus",
  "enable_code_interpreter": false,
  "enable_search": false,
  "frequency_penalty": 0,
  "logprobs": false,
  "n": 1,
  "parallel_tool_calls": false,
  "presence_penalty": 0,
  "preserve_thinking": false,
  "response_format.json_schema.strict": false,
  "search_options.enable_search_extension": false,
  "search_options.forced_search": false,
  "search_options.search_strategy": "turbo",
  "stream": false,
  "stream_options.include_usage": false,
  "temperature": 1,
  "tool_stream": false,
  "top_logprobs": 0,
  "top_p": 1,
  "vl_high_resolution_images": false
}'

Response example

Configured response example · not a live result

JSON
{
  "id": "chatcmpl-c4807108-c2ee-9e3d-98d5-7455ced4b354",
  "model": "qwen3.5-plus",
  "usage": {
    "total_tokens": 1275,
    "prompt_tokens": 11,
    "completion_tokens": 1264,
    "prompt_tokens_details": {
      "text_tokens": 11
    },
    "completion_tokens_details": {
      "text_tokens": 1264,
      "reasoning_tokens": 1242
    }
  },
  "object": "chat.completion",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How are you doing today? Is there anything I can help you with?",
        "reasoning_content": "Thinking Process:\n\n1.  **Analyze the Request:**\n    *   Input: \"hello\"\n    *   Intent: Greeting/Initiation of conversation.\n    *   Tone: Friendly, helpful, polite.\n    *   Expected Output: A greeting in return, offering assistance.\n\n2.  **Determine the appropriate response:**\n    *   Acknowledge the greeting.\n    *   Offer help.\n    *   Keep it concise but warm.\n\n3.  **Drafting options:**\n    *   Option 1: Hello! How can I help you today?\n    *   Option 2: Hi there! What's on your mind?\n    *   Option 3: Hello! How are you doing?\n\n4.  **Selecting the best option:** Option 1 is standard, polite, and clear.\n\n5.  **Final Polish:** \"Hello! How can I assist you today?\" (Slightly more formal/professional yet friendly).\n\n6.  **Final Output Generation:** (Matches the selected draft).\n    \"Hello! How can I assist you today?\" or \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    Let's go with a friendly, open-ended response.\n\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Self-Correction:* Keep it simple.\n    \"Hello! How can I help you today?\"\n\n    *Refining for personality:* \"Hello! 👋 How's your day going? Is there something specific I can help you with?\"\n\n    *Final Decision:* A balanced greeting.\n\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I am an AI.* I should be ready for any task.\n    \"Hello! How can I assist you today?\"\n\n    Let's combine warmth and utility.\n    \"Hello! How are you doing? Is there anything I can help you with today?\"\n\n    *Actually, keep it direct.*\n    \"Hello! How can I help you today?\"\n\n    *Okay, let's write it.*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, one more check.* The user just said \"hello\". A simple reciprocal greeting is best.\n    \"Hello! How can I assist you today?\"\n\n    *Okay, final version.*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I should avoid overthinking.* Just respond naturally.\n    \"Hello! How can I help you today?\"\n\n    *Okay, let's add an emoji for friendliness.*\n    \"Hello! 👋 How can I help you today?\"\n\n    *Final Plan:*\n    1. Greet back.\n    2. Offer help.\n    3. Keep it friendly.\n\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I'll stick to a standard helpful response.*\n    \"Hello! How can I assist you today?\"\n\n    *Okay, let's go with:*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Actually, I'll make it slightly more conversational.*\n    \"Hello! 👋 How's your day going? Is there something specific I can help you with?\"\n\n    *Okay, final choice.*\n    \"Hello! How can I help you today?\" (Simple and effective).\n    Let's add a bit more warmth.\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Okay, I will output:*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I need to make sure I don't sound too robotic.*\n    \"Hello! 👋 How's it going? Is there anything I can help you with today?\"\n\n    *Okay, that's good.*\n\n    *Wait, I should check if there are any constraints.* No constraints.\n    *Okay, proceeding.*\n\n    *Final thought:* Keep it brief.\n    \"Hello! How can I help you today?\"\n\n    *Okay, I'll go with a friendly version.*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I'll just say:*\n    \"Hello! How can I assist you today?\"\n\n    *Okay, let's finalize.*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I'll add an emoji.*\n    \"Hello! 👋 How are you doing today? Is there anything I can help you with?\"\n\n    *Okay, that's the one.*\n\n    *Wait, one more thing.* I should be mindful of being helpful.\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Okay, I'm overthinking. Just send the greeting.*\n    \"Hello! How can I help you today?\"\n\n    *Okay, I'll write:*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I'll make it:*\n    \"Hello! 👋 How's your day going? Is there anything I can help you with?\"\n\n    *Okay, final.*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Wait, I'll remove the emoji to be safe.*\n    \"Hello! How are you doing today? Is there anything I can help you with?\"\n\n    *Okay, done.*"
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "created": 1784604664,
  "openmodels_cost": 894,
  "system_fingerprint": null
}

Error handling

400Check the model ID and request fields.
429Retry with exponential backoff.
5xxRetry only temporary provider failures.

JSON Schema

{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "model",
    "messages"
  ],
  "properties": {
    "n": {
      "type": "integer",
      "default": 1,
      "maximum": 128,
      "minimum": 1,
      "description": "Number of choices to generate"
    },
    "seed": {
      "type": "integer",
      "description": "Seed for deterministic sampling"
    },
    "stop": {
      "type": [
        "string",
        "array"
      ],
      "items": {
        "type": "string"
      },
      "description": "Sequences that stop generation"
    },
    "audio": {
      "type": "object",
      "description": "Output audio configuration for Qwen-Omni models. Requires modalities to include audio."
    },
    "model": {
      "type": "string",
      "description": "The model to use"
    },
    "route": {
      "type": "object",
      "description": "OpenAny route configuration, including provider and other routing parameters"
    },
    "tools": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Tools available to the model"
    },
    "top_k": {
      "type": "integer",
      "minimum": 0,
      "description": "Number of candidate tokens used for sampling. If null or greater than 100, top_k is disabled and only top_p takes effect. This is not a standard OpenAI parameter."
    },
    "top_p": {
      "type": "number",
      "default": 1,
      "maximum": 1,
      "minimum": 0,
      "description": "Nucleus sampling probability"
    },
    "stream": {
      "type": "boolean",
      "default": false,
      "description": "Whether to stream the response"
    },
    "logprobs": {
      "type": "boolean",
      "default": false,
      "description": "Whether to return log probabilities for output tokens. Reasoning content does not include log probabilities."
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "The conversation messages"
    },
    "max_tokens": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum completion tokens"
    },
    "modalities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Output modalities. Applies only to Qwen-Omni models. Valid values include [\"text\"] and [\"text\",\"audio\"]."
    },
    "route_mode": {
      "type": "string",
      "description": "The mode for routing the request"
    },
    "audio.voice": {
      "type": "string",
      "description": "Voice used for output audio."
    },
    "temperature": {
      "type": "number",
      "default": 1,
      "maximum": 2,
      "minimum": 0,
      "description": "Sampling temperature"
    },
    "tool_choice": {
      "enum": [
        "none",
        "auto",
        "required"
      ],
      "type": [
        "string",
        "object"
      ],
      "description": "Tool selection policy: string modes none, auto, or required, or an object selecting a specific tool"
    },
    "tool_stream": {
      "type": "boolean",
      "default": false,
      "description": "Controls streaming behavior for complex tool arguments when stream is true. This is not a standard OpenAI parameter."
    },
    "audio.format": {
      "enum": [
        "wav"
      ],
      "type": "string",
      "description": "Output audio format. Only wav is supported."
    },
    "tools[].type": {
      "enum": [
        "function"
      ],
      "type": "string",
      "description": "Tool type. Currently only function is supported."
    },
    "top_logprobs": {
      "type": "integer",
      "default": 0,
      "maximum": 5,
      "minimum": 0,
      "description": "Number of most likely candidate tokens to return at each generation step. Effective only when logprobs is true."
    },
    "enable_search": {
      "type": "boolean",
      "default": false,
      "description": "Whether to enable web search. This is not a standard OpenAI parameter."
    },
    "search_options": {
      "type": "object",
      "description": "Web search strategy. Effective only when enable_search is true."
    },
    "stream_options": {
      "type": "object",
      "description": "Streaming options. Effective only when stream is true."
    },
    "enable_thinking": {
      "type": "boolean",
      "description": "Whether to enable thinking mode for supported hybrid thinking models. Reasoning content is returned in reasoning_content."
    },
    "messages[].role": {
      "enum": [
        "system",
        "user",
        "assistant",
        "tool"
      ],
      "type": "string",
      "description": "Message role in the conversation."
    },
    "response_format": {
      "type": "object",
      "description": "Format constraint for the response"
    },
    "thinking_budget": {
      "type": "integer",
      "description": "Maximum number of tokens for the thinking process. Applies to supported Qwen reasoning models."
    },
    "presence_penalty": {
      "type": "number",
      "default": 0,
      "maximum": 2,
      "minimum": -2,
      "description": "Penalty for previously used tokens"
    },
    "reasoning_effort": {
      "enum": [
        "low",
        "medium",
        "high",
        "xhigh",
        "max",
        "minimal",
        "none"
      ],
      "type": "string",
      "description": "Controls reasoning effort. Qwen3.8-Max-Preview supports low, medium, and xhigh. max/high map to xhigh, minimal maps to low, and none maps to enable_thinking=false."
    },
    "tools[].function": {
      "type": "object",
      "description": "Function tool definition."
    },
    "frequency_penalty": {
      "type": "number",
      "default": 0,
      "maximum": 2,
      "minimum": -2,
      "description": "Penalty for repeated tokens"
    },
    "preserve_thinking": {
      "type": "boolean",
      "default": false,
      "description": "Whether to append historical reasoning_content from assistant messages to the model input for supported models."
    },
    "messages[].content": {
      "type": "object",
      "description": "Message content. Can be text or model-specific multimodal content."
    },
    "parallel_tool_calls": {
      "type": "boolean",
      "default": false,
      "description": "Whether to enable parallel tool calling."
    },
    "response_format.type": {
      "enum": [
        "text",
        "json_object",
        "json_schema"
      ],
      "type": "string",
      "description": "Response format type."
    },
    "max_completion_tokens": {
      "type": "integer",
      "minimum": 1,
      "description": "Maximum visible completion tokens"
    },
    "tools[].function.name": {
      "type": "string",
      "description": "Function name. Supports letters, digits, underscores, and hyphens. Up to 64 tokens."
    },
    "enable_code_interpreter": {
      "type": "boolean",
      "default": false,
      "description": "Whether to enable the code interpreter feature. This is not a standard OpenAI parameter."
    },
    "vl_high_resolution_images": {
      "type": "boolean",
      "default": false,
      "description": "Whether to increase the maximum pixel limit for input images. Applies to supported Qwen VL models. This is not a standard OpenAI parameter."
    },
    "response_format.json_schema": {
      "type": "object",
      "description": "JSON Schema configuration. Required when response_format.type is json_schema."
    },
    "tools[].function.parameters": {
      "type": "object",
      "description": "Function parameters described with JSON Schema."
    },
    "messages[].reasoning_content": {
      "type": "string",
      "description": "Historical reasoning content from assistant messages. Required unchanged when using preserved thinking for supported models."
    },
    "search_options.forced_search": {
      "type": "boolean",
      "default": false,
      "description": "Whether to force web search instead of letting the model decide."
    },
    "stream_options.include_usage": {
      "type": "boolean",
      "default": false,
      "description": "Whether to include token usage information in the final streaming chunk."
    },
    "tools[].function.description": {
      "type": "string",
      "description": "Function description used by the model to decide when and how to call the tool."
    },
    "search_options.search_strategy": {
      "enum": [
        "turbo",
        "max",
        "agent",
        "agent_max"
      ],
      "type": "string",
      "default": "turbo",
      "description": "Search scale strategy. turbo balances speed and effectiveness; max is more comprehensive; agent and agent_max perform multi-round retrieval for supported models."
    },
    "response_format.json_schema.name": {
      "type": "string",
      "description": "Unique schema name. Supports letters, numbers, underscores, and hyphens. Maximum length: 64 characters."
    },
    "response_format.json_schema.schema": {
      "type": "object",
      "description": "JSON Schema object defining the output data structure."
    },
    "response_format.json_schema.strict": {
      "type": "boolean",
      "default": false,
      "description": "Whether the model must strictly follow the schema constraints."
    },
    "search_options.enable_search_extension": {
      "type": "boolean",
      "default": false,
      "description": "Whether to enable domain-specific search."
    },
    "response_format.json_schema.description": {
      "type": "string",
      "description": "Description of the schema purpose."
    }
  }
}

Model API questions

How do I call Qwen3.5 Plus through OpenAny?

Use model ID qwen3.5-plus with an OpenAny key and the operation published in this model's API tab. The model API base is https://api.openany.si/v1. Confirm the protocol and request schema; model availability does not imply every OpenAI API operation is supported.

How is Qwen3.5 Plus billed?

Compare the published rate and billing unit of the selected provider route. Input, output and cache token rates may differ. Image, audio and video models can use other units. Recorded usage determines the charge under that route's billing contract.

Are Community and Verified routes the same as an official publisher API?

No. Inspect the provider name and supply classification for the specific route. A marketplace listing or a supply label is not a claim of publisher endorsement, identical service or measured uptime. Different route prices may reflect different supply and conditions.

Where do these prices come from, and when were they updated?

Rates come from the provider routes in OpenAny's public model catalog, not an independent quote from the model publisher. The catalog does not supply a price update timestamp. A page or catalog snapshot date is not a price revision date. Compare supply, billing units, tiers and conditions; a lower listed rate alone does not establish equivalent service or explain the price difference.

Use Qwen3.5 Plus with your agent

Inspect endpoint contracts and confirm availability and pricing before a paid call.