---
title: "Create a chat completion (legacy path)"
method: POST
path: "/chat"
---

# Create a chat completion (legacy path)

`POST /chat`

## Request

- Base URL: `https://www.ninjachat.ai/api/v1`
- URL: `https://www.ninjachat.ai/api/v1/chat`
- Auth: HTTP bearer

Supported compatibility surface — kept working indefinitely, but not the path for new integrations. Modern equivalent: `POST /responses`.

Backward-compatible path for /chat/completions, including historical field spellings and session memory.

## Headers

- `Idempotency-Key` string

## Request body

- object

## Response `200`

Chat completion or SSE stream.

- ChatCompletionResponse
  - `cost` object
    - `this_request` string, required
    - `per_image` string
    - `per_video` string
    - `images` integer
  - `balance` string
  - `metadata` object
    - `latency_ms` number, required
    - `group` string
    - `search_depth` string
    - `results_count` integer
  - `id` string, required
  - `object` 'chat.completion', required
  - `created` integer, required
  - `model` string, required
  - `resolved_model` string, required
  - `provider` string, nullable, required
  - `choices` object[], required
    - `index` integer, required
    - `message` object, required
      - `role` 'assistant', required
      - `content` string, nullable, required
      - `reasoning_content` string
      - `tool_calls` object[]
        - `id` string, required
        - `type` 'function', required
        - `extra_content` object
          - `google` object
            - `thought_signature` string, required
        - `function` object, required
          - `name` string, required
          - `arguments` string, required
    - `finish_reason` string, nullable, required
  - `usage` ChatUsage, required
    - `prompt_tokens` integer, required
    - `completion_tokens` integer, required
    - `total_tokens` integer, required
    - `prompt_tokens_details` object
      - `cached_tokens` integer
      - `cache_creation_tokens` integer
    - `completion_tokens_details` object
      - `reasoning_tokens` integer
  - `cost_usd` number, required
  - `request_id` string, required
  - `routing` RoutingSummary, required
    - `strategy` 'balanced' | 'cost' | 'latency' | 'quality', required
    - `requested_models` string[], required
    - `resolved_model` string, required
    - `provider` string, nullable, required
    - `provider_attempts` ProviderAttemptReceipt[]
      - `provider` string, required
      - `outcome` 'served' | 'failed_over' | 'failed', required
      - `attempt_index` integer, required
    - `fallbacks_allowed` boolean, required
    - `data_policy` 'default' | 'no_training' | 'zero_retention', required
    - `caching` 'auto'
    - `source` 'request' | 'project' | 'default'
    - `router` RouterDecisionSummary
      - `id` 'ninja/auto', required
      - `task` string, required
      - `classified_by` 'regex' | 'llm' | 'llm-cached', required
      - `override` 'long_context' | 'multilingual', nullable, required
      - `reasoning` string, required
      - `candidates` string[], required
      - `considered` object[], required

## Other responses

- `400`: Invalid or unsupported request parameter.
- `401`: Missing or invalid API key.
- `402`: Insufficient balance or project spend limit reached.
- `429`: Rate limit exceeded.
- `500`: Gateway error.

---

[API](https://skmtc.dev/ninjachat/apis/ninjachat-api.md) · [All operations](https://skmtc.dev/ninjachat/apis/ninjachat-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ninjachat/apis/ninjachat-api/revisions/fa7dfcbdcb03?raw)
