NinjaChat
ModelsAPIPricingToolsBlog
Sign inDashboard→
ModelsAPIPricingToolsBlog
Dashboard →
  1. Home›
  2. API models›
  3. DeepSeek V3 0324

DeepSeek V3 0324

DeepInfra/
StreamingJSON modeTool callingLong contextMultilingual
Get an API key

DeepSeek's stable March 2025 V3 snapshot for deterministic, non-reasoning workloads.

Modalities
text→text
Price
$0.24 / $0.90/M tok
Context
164K
Providers
Live
PlaygroundProvidersAPIRecipesPricingRequest logs

Playground

Preparing playground
NinjaChat

Every AI. One app.

Download on the App Store

Product

  • Dashboard
  • ninja for iMessage
  • Pricing
  • Free AI Tools
  • Affiliate Program
  • iOS App

Developers

  • API
  • API Models
  • MCP / Agents
  • API Docs

Models

  • Model Council
  • Seed 1.8
  • Gemini 2.5 Flash
  • Gemini 2.5 Pro
  • Gemini 3 Flash Preview
  • View All Models

Company

  • Blog
  • Uncensored AI
  • Community
  • Careers
  • Support
  • Privacy Policy
  • Terms of Service

Copyright © 2026 NinjaChat AI. Product of Bloon All Rights Reserved.

Providers

API

POST/api/v1/chat/completionsOpenAI-compatible
deepseek-v3-0324
curl https://www.ninjachat.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3-0324",
    "messages": [{ "role": "user", "content": "Hello!" }],
    "stream": true
  }'
messagestemperaturemax_completion_tokenstop_pstopfrequency_penaltypresence_penaltyseedstreamuserroutingtoolstool_choiceresponse_format

Recipes for DeepSeek V3 0324

Each request below is generated from what DeepSeek V3 0324 serves on NinjaChat today — the same capabilities and parameters that GET /models reports — so it runs as written with your key.

Stream tokens

Show text as it is generated instead of waiting for the whole completion.

deepseek-v3-0324· stream tokens
# export NINJACHAT_API_KEY="nj_sk_..."   (Developers → Keys)
curl -N https://www.ninjachat.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3-0324",
    "messages": [{ "role": "user", "content": "Write a haiku about deploy day." }],
    "stream": true,
    "stream_options": { "include_usage": true }
  }'
  • The response is Server-Sent Events: each data: line carries one chat.completion.chunk and the stream ends with data: [DONE]. Both SDKs parse that for you and stop at the sentinel.
  • With stream_options.include_usage the last chunk before [DONE] has an empty choices array and a usage object with the billed token counts, so guard on choices.length before reading a delta.
  • Keep curl -N so the buffer is not held back; the final usage chunk also carries cost_usd for this request.

Call a tool

Let the model decide when to call your function and hand you typed arguments.

deepseek-v3-0324· call a tool
# export NINJACHAT_API_KEY="nj_sk_..."   (Developers → Keys)
curl https://www.ninjachat.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3-0324",
    "messages": [{ "role": "user", "content": "Do I need an umbrella in Lisbon today?" }],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Current weather for a city",
        "parameters": {
          "type": "object",
          "properties": { "city": { "type": "string" } },
          "required": ["city"]
        }
      }
    }],
    "tool_choice": "auto"
  }'

Get strict JSON

Have the model return an object that matches your schema, so you can parse it without cleanup.

deepseek-v3-0324· get strict json
# export NINJACHAT_API_KEY="nj_sk_..."   (Developers → Keys)
curl https://www.ninjachat.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NINJACHAT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v3-0324",
    "messages": [{ "role": "user", "content": "Extract the invoice: ACME Ltd billed 1,240.50 EUR." }],
    "response_format": {
      "type": "json_schema",
      "json_schema": {
        "name": "invoice",
        "strict": true,
        "schema": {
          "type": "object",
          "properties": {
            "vendor": { "type": "string" },
            "total": { "type": "number" },
            "currency": { "type": "string" }
          },
          "required": ["vendor", "total", "currency"],
          "additionalProperties": false
        }
      }
    }
  }'

Pricing

Input
$0.24/M tokens
Cached input
$0.024/M tokens
Output
$0.90/M tokens

More from DeepSeek

Model
ProvidersContextLatencyUptime30d volumePrice · in / out
DeepSeek R1 0528
deepseek-r1-0528
i164K$0.57/$2.29
DeepSeek V3
deepseek-v3
164K$1.74/$3.48
DeepSeek V3.1
deepseek-v3.1
164K$0.25/$0.95
DeepSeek V3.2
deepseek-v3.2
+2164K$0.56/$0.84
DeepSeek V4 Flash
deepseek-v4-flash
+11M$0.14/$0.28
DeepSeek V4 Flash 0731
deepseek-v4-flash-0731
+61M
  • tool_choice: "auto" lets the model answer directly when no tool is needed; "required" forces at least one call, and { "type": "function", "function": { "name": "get_weather" } } pins a specific one.
  • Arguments arrive as a JSON string in function.arguments, never as an object — parse before use. Send your result back as a tool message with the same tool_call_id, then call again for the natural-language answer.
  • Up to 32 tools per request; set parallel_tool_calls: false when your functions must run one at a time.
  • json_schema with strict: true constrains the output to your schema; mark every property required and set additionalProperties: false so the object is exactly what you parse.
  • { "type": "json_object" } is the looser form — valid JSON with no schema. Whichever you use, message.content is the JSON string; parse it, do not regex it.
  • 4.1s
    100%
    1.9Mtok
    $0.22/$0.66