Skip to main content
No credits deducted. The estimate endpoint is always free. Use it to build cost calculators, validate budgets before running batch jobs, or compare pricing across models.

Request

POST https://ninjachat.ai/api/v1/estimate
Content-Type: application/json
No API key required for basic estimates. Pass your key if you want balance-aware responses.
{
  "model": "claude-sonnet-4.6",
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Write a 500-word essay about climate change."}
  ],
  "count": 1000
}

Response

{
  "model": "claude-sonnet-4.6",
  "model_name": "Claude Sonnet 4.6",
  "provider": "Anthropic",
  "tier": "premium",
  "cost_per_request_cents": 1.5,
  "cost_per_request": "$0.0150",
  "estimated_tokens": {
    "prompt": 28,
    "completion": 11
  },
  "for_count": 1000,
  "total_cost_cents": 1500.0,
  "total_cost": "$15.0000",
  "cheaper_alternatives": [
    {
      "id": "claude-sonnet-4.5",
      "name": "Claude Sonnet 4.5",
      "cost_cents": 0.6,
      "savings_percent": 60,
      "capabilities": ["text", "code", "analysis", "reasoning"]
    },
    {
      "id": "gpt-5",
      "name": "GPT-5",
      "cost_cents": 0.6,
      "savings_percent": 60,
      "capabilities": ["text", "code", "reasoning", "analysis", "math"]
    },
    {
      "id": "deepseek-v3",
      "name": "DeepSeek V3",
      "cost_cents": 0.3,
      "savings_percent": 80,
      "capabilities": ["text", "code", "math", "reasoning"]
    }
  ],
  "monthly_estimate": {
    "at_100": "$0.15",
    "at_1000": "$1.50",
    "at_10000": "$15.00",
    "at_100000": "$150.00"
  },
  "ensemble_pricing": {
    "ensemble": { "cost_cents": 4, "cost": "$0.040" },
    "ensemble-quality": { "cost_cents": 5, "cost": "$0.050" }
  },
  "note": "Token estimates are approximate. Actual billing is per-request, not per-token."
}

Parameters

ParameterTypeRequiredDefaultDescription
modelstringYesAny model ID (concrete models only, not auto*).
messagesarrayNoUsed for approximate token estimation.
countintegerNo1Number of requests to estimate total cost for (1–1,000,000).
modelsarrayNoCompare pricing across multiple models simultaneously.

Compare multiple models at once

Pass models to get a side-by-side pricing comparison:
{
  "model": "claude-sonnet-4.6",
  "count": 50000,
  "models": ["gpt-5", "claude-sonnet-4.6", "deepseek-v3", "gpt-5-mini", "claude-opus-4.6"]
}
{
  "model_comparison": [
    { "model": "gpt-5-mini",      "cost_cents": 0.3, "total_cost_cents": 15000 },
    { "model": "deepseek-v3",     "cost_cents": 0.3, "total_cost_cents": 15000 },
    { "model": "gpt-5",           "cost_cents": 0.6, "total_cost_cents": 30000 },
    { "model": "claude-sonnet-4.6","cost_cents": 1.5, "total_cost_cents": 75000 },
    { "model": "claude-opus-4.6", "cost_cents": 3.0, "total_cost_cents": 150000 }
  ]
}

Code examples

import requests

def estimate_batch_cost(model: str, count: int) -> float:
    """Returns estimated cost in cents. Free to call."""
    r = requests.post("https://ninjachat.ai/api/v1/estimate",
        json={"model": model, "count": count}
    )
    return r.json()["total_cost_cents"]

# Check cost before running a large batch
cost = estimate_batch_cost("claude-sonnet-4.6", 10000)
budget = 5000  # 50 dollars in cents

if cost > budget:
    print(f"Too expensive: ${cost/100:.2f}. Try 'gpt-5' or 'deepseek-v3'.")
else:
    print(f"Within budget: ${cost/100:.2f}. Proceeding with batch.")
    # ... run batch

Monthly cost planning

The monthly_estimate field in every response gives you cost projections at 4 scale levels:
"monthly_estimate": {
  "at_100":    "$0.06",
  "at_1000":   "$0.60",
  "at_10000":  "$6.00",
  "at_100000": "$60.00"
}
Use this to plan credit purchases and set spend alerts in your application.