Kimi K2.5 API

Img2Vid exposes Kimi K2.5 through the public chat model API as moonshot/kimi-k2.5.

Model identity

Field Value
Img2Vid model key moonshot/kimi-k2.5
Runtime model id kimi-k2.5
Provider MoonShot
Public capabilities Reasoning, image attachments, tool calling

Pricing

Unit Credits
Input 6 credits per 1,000,000 tokens
Output 30 credits per 1,000,000 tokens
Cached input 3 credits per 1,000,000 tokens

Model options

No additional public model options are currently configured for moonshot/kimi-k2.5. Set reasoning: true when you want Img2Vid to request the configured thinking mode.

OpenAI-compatible example

curl https://img2vid.net/api/v1/chat/completions \
  -H "Authorization: Bearer $BUBLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "moonshot/kimi-k2.5",
    "messages": [
      {
        "role": "system",
        "content": "You are a precise research and coding assistant."
      },
      {
        "role": "user",
        "content": "Analyze this product requirement and identify the implementation risks."
      }
    ],
    "reasoning": true,
    "max_completion_tokens": 800
  }'

Anthropic Messages-compatible example

curl https://img2vid.net/api/v1/messages \
  -H "Authorization: Bearer $BUBLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "moonshot/kimi-k2.5",
    "system": "You are a precise research and coding assistant.",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "Analyze this product requirement and identify the implementation risks."
          }
        ]
      }
    ],
    "thinking": true,
    "max_tokens": 800
  }'

Gemini-compatible example

curl https://img2vid.net/api/v1beta/models/moonshot/kimi-k2.5:generateContent \
  -H "Authorization: Bearer $BUBLE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "systemInstruction": {
      "parts": [
        {
          "text": "You are a precise research and coding assistant."
        }
      ]
    },
    "contents": [
      {
        "role": "user",
        "parts": [
          {
            "text": "Analyze this product requirement and identify the implementation risks."
          }
        ]
      }
    ],
    "reasoning": true,
    "generationConfig": {
      "maxOutputTokens": 800
    }
  }'

For Gemini-compatible streaming, use /api/v1beta/models/moonshot/kimi-k2.5:streamGenerateContent.

SDK examples

The examples below use this page's Img2Vid chat model key through the OpenAI-compatible Chat Completions SDK method. They assume you have already initialized the SDK client as shown in the Quickstart and imported the required language SDK types. Anthropic Messages and Gemini-compatible calls use the same model key; Gemini streaming must use the SDK's streamGenerateContent / stream_generate_content method.

JavaScript / TypeScript

const completion = await buble.chat.completions.create({
  model: 'moonshot/kimi-k2.5',
  messages: [
    {
      role: 'system',
      content: 'You are a precise research and coding assistant.',
    },
    {
      role: 'user',
      content:
        'Analyze this product requirement and identify the implementation risks.',
    },
  ],
  reasoning: true,
  max_completion_tokens: 800,
});

console.log(completion.choices?.[0]?.message?.content);

Python

completion = client.chat.completions.create(
    model="moonshot/kimi-k2.5",
    messages=[
        {"role": "system", "content": "You are a precise research and coding assistant."},
        {"role": "user", "content": "Analyze this product requirement and identify the implementation risks."},
    ],
    reasoning=True,
    max_completion_tokens=800,
)

print(completion["choices"][0]["message"]["content"])

Go

completion, err := client.Chat.Completions.Create(ctx, buble.ChatRequest{
	"model": "moonshot/kimi-k2.5",
	"messages": []any{
		map[string]any{"role": "system", "content": "You are a precise research and coding assistant."},
		map[string]any{"role": "user", "content": "Analyze this product requirement and identify the implementation risks."},
	},
	"reasoning":             true,
	"max_completion_tokens": 800,
})
if err != nil {
	return err
}
fmt.Println(completion)

Rust

let completion = client.chat().completions().create(serde_json::json!({
    "model": "moonshot/kimi-k2.5",
    "messages": [
        { "role": "system", "content": "You are a precise research and coding assistant." },
        { "role": "user", "content": "Analyze this product requirement and identify the implementation risks." }
    ],
    "reasoning": true,
    "max_completion_tokens": 800
})).await?;

Swift

let completion = try await client.chat.completions.create([
    "model": "moonshot/kimi-k2.5",
    "messages": [
        ["role": "system", "content": "You are a precise research and coding assistant."],
        ["role": "user", "content": "Analyze this product requirement and identify the implementation risks."]
    ],
    "reasoning": true,
    "max_completion_tokens": 800
])

Dart / Flutter

final completion = await client.chat.completions.create({
  'model': 'moonshot/kimi-k2.5',
  'messages': [
    {'role': 'system', 'content': 'You are a precise research and coding assistant.'},
    {'role': 'user', 'content': 'Analyze this product requirement and identify the implementation risks.'},
  ],
  'reasoning': true,
  'max_completion_tokens': 800,
});

Elixir

{:ok, completion} =
  Buble.Chat.Completions.create(client, %{
    model: "moonshot/kimi-k2.5",
    messages: [
      %{role: "system", content: "You are a precise research and coding assistant."},
      %{role: "user", content: "Analyze this product requirement and identify the implementation risks."}
    ],
    reasoning: true,
    max_completion_tokens: 800
  })

Java

var completion = client.chat().completions().create(Map.of(
        "model", "moonshot/kimi-k2.5",
        "messages", List.of(
                Map.of("role", "system", "content", "You are a precise research and coding assistant."),
                Map.of("role", "user", "content", "Analyze this product requirement and identify the implementation risks.")),
        "reasoning", true,
        "max_completion_tokens", 800));

.NET

var completion = await client.Chat.Completions.CreateAsync(new Dictionary<string, object?>
{
    ["model"] = "moonshot/kimi-k2.5",
    ["messages"] = new[]
    {
        new Dictionary<string, object?> { ["role"] = "system", ["content"] = "You are a precise research and coding assistant." },
        new Dictionary<string, object?> { ["role"] = "user", ["content"] = "Analyze this product requirement and identify the implementation risks." }
    },
    ["reasoning"] = true,
    ["max_completion_tokens"] = 800
});

PHP

$completion = $client->chat()->completions()->create([
    'model' => 'moonshot/kimi-k2.5',
    'messages' => [
        ['role' => 'system', 'content' => 'You are a precise research and coding assistant.'],
        ['role' => 'user', 'content' => 'Analyze this product requirement and identify the implementation risks.'],
    ],
    'reasoning' => true,
    'max_completion_tokens' => 800,
]);

Ruby

completion = client.chat.completions.create(
  model: "moonshot/kimi-k2.5",
  messages: [
    { role: "system", content: "You are a precise research and coding assistant." },
    { role: "user", content: "Analyze this product requirement and identify the implementation risks." }
  ],
  reasoning: true,
  max_completion_tokens: 800
)