---
title: "Create a chat completion"
method: POST
path: "/v1/chat/completions"
tags: ["Chat Completions"]
---

# Create a chat completion

`POST /v1/chat/completions`

Creates a chat completion. Set stream: true for server-sent events.

## Headers

- `X-Free-Tier` 'true'

## Request body

- ChatCompletionRequest
  - `model` string, required — Model id.
  - `messages` ChatMessage[], required — Conversation messages. content can be a string or a list of parts for multimodal requests.
    - `role` 'system' | 'user' | 'assistant' | 'tool', required
    - `content` union, required — Text content or an array of text/image_url parts.
      - string
      - ContentPart[]
        - union
          - TextContentPart
            - `type` 'text', required
            - `text` string, required
          - ImageContentPart
            - `type` 'image_url', required
            - `image_url` ImageUrl, required
              - …
    - `name` string
  - `temperature` number — Sampling temperature.
  - `top_p` number
  - `n` integer
  - `stream` boolean
  - `max_tokens` integer
  - `stop` union
    - string
    - string[]
  - `presence_penalty` number
  - `frequency_penalty` number
  - `user` string — End-user identifier for abuse monitoring.
  - `flagged_categories` string[] — Optional moderation categories to block for this request. Supported: harassment, hate, illicit, sexual. Self-harm and sexual/minors are always blocked.

## Response `200`

Chat completion response

- ChatCompletionResponse
  - `id` string, required
  - `object` 'chat.completion', required
  - `created` integer, required
  - `model` string, required
  - `choices` ChatCompletionChoice[], required
    - `index` integer, required
    - `message` ChatMessageResponse, required
      - `role` 'assistant', required
      - `content` string, required
    - `finish_reason` string, nullable, required
  - `usage` Usage
    - `prompt_tokens` integer
    - `completion_tokens` integer
    - `total_tokens` integer
  - `remaining_credits` integer, nullable
  - `estimated_credits_used` integer
  - `estimated_cost_usd` number

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `402` — Insufficient credits
- `429` — Rate limited
- `502` — Upstream unavailable

---

[API](https://skmtc.net/abliteration/apis/abliteration-ai-api.md) · [All operations](https://skmtc.net/abliteration/apis/abliteration-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/abliteration/abliteration-ai-api/versions/3a359f370787/schema)
