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

# Create a chat completion

`POST /v1/chat/completions`

## Request

- Base URL: `https://api.abliteration.ai`
- URL: `https://api.abliteration.ai/v1/chat/completions`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/abliteration/apis/abliteration-ai-api/docs/v1/chat/completions/post.ts> (a function with typed inputs; its response is checked against the schema)

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.dev/abliteration/apis/abliteration-ai-api.md) - [All operations](https://skmtc.dev/abliteration/apis/abliteration-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/abliteration/apis/abliteration-ai-api/revisions/3a359f370787?raw)
