Kimi K2.5 OpenRouter integration provides seamless access to Moonshot AI's open-weights flagship model through a unified API gateway. With OpenRouter, developers can incorporate Kimi K2.5's long context and reasoning capabilities into existing apps with minimal API changes.
What is OpenRouter?
OpenRouter is a unified API gateway that provides access to hundreds of AI models through a single, standardized interface. By using Kimi K2.5 through OpenRouter, developers benefit from:
- One API for all models: Consistent interface across providers
- Automatic fallbacks: Switch models if one is unavailable
- Competitive pricing: Access to best available rates
- Usage analytics: Centralized tracking and monitoring
- Broad compatibility: Works with OpenAI-compatible SDKs
Getting Started with Kimi K2.5 on OpenRouter
Account Setup
- Create OpenRouter Account: Visit openrouter.ai
- Add Payment Method: Configure billing preferences
- Generate API Key: Create your access credentials
- Find Kimi K2.5: Search for "moonshotai/kimi-k2.5" in the model list
Basic Integration
from openai import OpenAI
# Initialize with OpenRouter
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="YOUR_OPENROUTER_API_KEY"
)
# Make a request to Kimi K2.5
response = client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum computing in simple terms."}
]
)
print(response.choices[0].message.content)OpenRouter Pricing for Kimi K2.5
Cost Comparison
| Provider | Input (per 1M tokens) | Output (per 1M tokens) |
|---|---|---|
| OpenRouter | $0.45 | $2.25 |
| Direct Moonshot | $0.60 | $3.00 |
Pricing Benefits
Using Kimi K2.5 through OpenRouter offers:
- Transparent pricing: No hidden fees
- Pay-as-you-go: Only pay for what you use
- Pass-through model pricing: OpenRouter states provider pricing is passed through
- Unified billing/analytics: Track multi-model usage in one dashboard
Code Examples for Popular Frameworks
Python (OpenAI SDK)
import openai
client = openai.OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="$OPENROUTER_API_KEY"
)
completion = client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=[
{"role": "user", "content": "Write a Python function to calculate fibonacci numbers."}
],
extra_headers={
"HTTP-Referer": "YOUR_SITE_URL",
"X-Title": "YOUR_APP_NAME"
}
)
print(completion.choices[0].message.content)JavaScript/TypeScript
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'https://openrouter.ai/api/v1',
apiKey: process.env.OPENROUTER_API_KEY,
defaultHeaders: {
'HTTP-Referer': 'YOUR_SITE_URL',
'X-Title': 'YOUR_APP_NAME'
}
});
async function getCompletion() {
const completion = await openai.chat.completions.create({
model: 'moonshotai/kimi-k2.5',
messages: [
{ role: 'user', content: 'Hello!' }
]
});
console.log(completion.choices[0].message.content);
}
getCompletion();cURL
curl https://openrouter.ai/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "HTTP-Referer: YOUR_SITE_URL" \
-H "X-Title: YOUR_APP_NAME" \
-d '{
"model": "moonshotai/kimi-k2.5",
"messages": [
{"role": "user", "content": "What is the meaning of life?"}
]
}'Advanced Features
Model Routing and Fallbacks
OpenRouter enables intelligent model selection:
# Automatic fallback configuration
response = client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=messages,
extra_body={
"models": ["moonshotai/kimi-k2.5", "openai/gpt-4o"],
"route": "fallback"
}
)Streaming Responses
For real-time applications:
# Streaming with Kimi K2.5 on OpenRouter
stream = client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=[{"role": "user", "content": "Tell me a story."}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")Function Calling
Kimi K2.5 supports tool use through OpenRouter:
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get current weather",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string"}
},
"required": ["location"]
}
}
}
]
response = client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=[{"role": "user", "content": "What's the weather in Tokyo?"}],
tools=tools
)Framework Integrations
LangChain Integration
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="moonshotai/kimi-k2.5",
base_url="https://openrouter.ai/api/v1",
api_key="YOUR_OPENROUTER_API_KEY",
model_kwargs={
"headers": {
"HTTP-Referer": "YOUR_SITE_URL",
"X-Title": "YOUR_APP_NAME"
}
}
)
response = llm.invoke("Explain machine learning.")LlamaIndex Integration
from llama_index.llms.openai import OpenAI
llm = OpenAI(
model="moonshotai/kimi-k2.5",
api_base="https://openrouter.ai/api/v1",
api_key="YOUR_OPENROUTER_API_KEY",
additional_kwargs={
"headers": {
"HTTP-Referer": "YOUR_SITE_URL",
"X-Title": "YOUR_APP_NAME"
}
}
)Kimi K2.5 Features Available on OpenRouter
Full Capability Access
| Feature | Available on OpenRouter | Notes |
|---|---|---|
| Context Length | Yes | 262,144 tokens (~256K) |
| Function Calling | Yes | Tool use supported |
| Streaming | Yes | Real-time responses |
| JSON Mode | Yes | Structured output |
| Reasoning Controls | Yes | Via reasoning / include_reasoning parameters |
| Vision | Yes | Multimodal support |
Special Parameters
Access Kimi K2.5 unique features:
# Enable reasoning controls
response = client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=messages,
reasoning={"max_tokens": 4000},
include_reasoning=True
)Comparison: Direct vs OpenRouter
| Aspect | Direct Moonshot API | OpenRouter |
|---|---|---|
| Setup Complexity | Single provider | Universal gateway |
| Pricing | $0.60/$3.00 per 1M | $0.45/$2.25 per 1M |
| Model Switching | Manual | Automatic fallbacks |
| Analytics | Provider-specific | Unified dashboard |
| Rate Limits | Provider-defined | Optimized routing |
Best Practices
Optimization Tips
- Use Headers When Needed:
HTTP-RefererandX-Titleare optional, but useful for app attribution - Implement Retries: Handle transient failures gracefully
- Monitor Usage: Track costs through OpenRouter dashboard
- Cache Responses: Reduce costs for repeated queries
- Use Streaming: For better UX with long responses
Error Handling
import time
from openai import OpenAI, RateLimitError
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="YOUR_KEY"
)
def robust_completion(messages, max_retries=3):
for attempt in range(max_retries):
try:
return client.chat.completions.create(
model="moonshotai/kimi-k2.5",
messages=messages
)
except RateLimitError:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # Exponential backoff
else:
raiseUse Cases
Multi-Model Applications
# Compare responses across models
models = [
"moonshotai/kimi-k2.5",
"openai/gpt-4o",
"anthropic/claude-3.5-sonnet"
]
for model in models:
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}]
)
print(f"{model}: {response.choices[0].message.content}")Cost-Optimized Workflows
# Route simple queries to cheaper models
def smart_route(prompt_complexity):
if prompt_complexity == "simple":
return "moonshotai/kimi-k2.5" # Most cost-effective
elif prompt_complexity == "complex":
return "moonshotai/kimi-k2.5" # Still best value
else:
return "moonshotai/kimi-k2.5" # Default to KimiFrequently Asked Questions
How do I access Kimi K2.5 on OpenRouter?
Use the model identifier moonshotai/kimi-k2.5 in your API calls to OpenRouter.
Is Kimi K2.5 pricing the same on OpenRouter?
Not exactly. As of 2026-02-10, OpenRouter lists moonshotai/kimi-k2.5 at $0.45 input / $2.25 output per 1M tokens, while direct Moonshot provider pricing is listed as $0.60 input (cache miss) / $3.00 output.
What are the benefits of using OpenRouter over direct API?
OpenRouter provides unified billing, automatic fallbacks, usage analytics, and easy model switching without changing your code.
Does Kimi K2.5 support function calling on OpenRouter?
Yes. OpenRouter lists support for tools, streaming, structured outputs, and a 262,144-token context window for moonshotai/kimi-k2.5.
Can I use my existing OpenAI SDK code with OpenRouter?
Absolutely. Just change the base_url to https://openrouter.ai/api/v1 and use the model name moonshotai/kimi-k2.5.
Are there rate limits on OpenRouter?
Rate limits vary based on your OpenRouter account tier. Higher tiers offer increased rate limits and priority access.
How do I handle authentication?
Use your OpenRouter API key in the Authorization header with the Bearer token format.
Can I use Kimi K2.5 with LangChain via OpenRouter?
Yes, LangChain's OpenAI integration works seamlessly with OpenRouter by configuring the base URL and model name.
Start using Kimi K2.5 today through OpenRouter for a fast integration path with unified multi-model routing.