Kimi K3 vs DeepSeek V4 Pro 0423

Both sit behind the same key and the same code on uttapen — the only thing that changes is the model string, so you can run each of them against your own workload without touching anything else. On cost, DeepSeek V4 Pro 0423 comes out about 3.4× cheaper.

FeatureKimi K3DeepSeek V4 Pro 0423
ProviderMoonshot (Kimi)DeepSeek
Model idmoonshotai/kimi-k3deepseek/deepseek-v4-pro
Context1,048,576 tokens1,048,576 tokens
Max output943,718 tokens393,216 tokens
Input / 1M tokens66,474 toman553,951 toman
Output / 1M tokens5,539,510 toman1,107,902 toman
≈ one 1,000-word request7,288 toman2,160 toman
Input caching63,012 toman / 1M46,740 toman / 1M
Image inputYesNo
File inputNoNo
Tool callingYesYes
JSON outputYesYes
Reasoning modeYesYes

Which one for what?

Kimi K3

  • Multi-step problems, maths, and tracking down a bug
  • Whole documents or a codebase in a single request
  • Reading screenshots, invoices, and scanned forms
  • Agents that call your own APIs and database
7,288 toman per 1,000 words · Model page

DeepSeek V4 Pro 0423

  • Multi-step problems, maths, and tracking down a bug
  • Whole documents or a codebase in a single request
  • Agents that call your own APIs and database
2,160 toman per 1,000 words · Model page

Run both with the same code

Swap the model value between the two ids and send the same request twice; what each answer cost comes back in the X-Uttapen-Cost-Toman header.

curl https://api.uttapen.ir/v1/chat/completions \
  -H "Authorization: Bearer sk-up-…" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "moonshotai/kimi-k3",
    "messages": [{"role": "user", "content": "Introduce yourself."}],
    "stream": true
  }'
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uttapen.ir/v1",
    api_key="sk-up-…",
)

stream = client.chat.completions.create(
    model="moonshotai/kimi-k3",
    messages=[{"role": "user", "content": "Introduce yourself."}],
    stream=True,
)
for chunk in stream:
    print(chunk.choices[0].delta.content or "", end="", flush=True)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.uttapen.ir/v1",
  apiKey: "sk-up-…",
});

const stream = await client.chat.completions.create({
  model: "moonshotai/kimi-k3",
  messages: [{ role: "user", content: "Introduce yourself." }],
  stream: true,
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
<?php
// composer require openai-php/client guzzlehttp/guzzle
$client = OpenAI::factory()
    ->withBaseUri('https://api.uttapen.ir/v1')
    ->withApiKey('sk-up-…')
    ->make();

$result = $client->chat()->create([
    'model' => 'moonshotai/kimi-k3',
    'messages' => [['role' => 'user', 'content' => 'Introduce yourself.']],
]);
echo $result->choices[0]->message->content;
package main

import (
	"context"
	"fmt"

	"github.com/openai/openai-go"
	"github.com/openai/openai-go/option"
)

func main() {
	client := openai.NewClient(
		option.WithBaseURL("https://api.uttapen.ir/v1"),
		option.WithAPIKey("sk-up-…"),
	)
	resp, err := client.Chat.Completions.New(context.Background(), openai.ChatCompletionNewParams{
		Model:    "moonshotai/kimi-k3",
		Messages: []openai.ChatCompletionMessageParamUnion{openai.UserMessage("Introduce yourself.")},
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(resp.Choices[0].Message.Content)
}

model = "deepseek/deepseek-v4-pro"

No API key yet? Create one →

Frequently asked

Which is cheaper, Kimi K3 or DeepSeek V4 Pro 0423?
DeepSeek V4 Pro 0423 is the cheaper of the two: one 1,000-word request costs about 2,160 toman, about 3.4× cheaper than Kimi K3.
Which one has the larger context window?
Kimi K3, with 1,048,576 tokens.
Can I use Kimi K3 and DeepSeek V4 Pro 0423 with one API key?
Yes. An uttapen key reaches every model unless you gave it an allowed-models list, and each request is charged in toman to the same wallet; only the model value changes.

More comparisons: all pairs · model rankings · full catalogue

base_url = https://api.uttapen.ir/v1