---
title: "Generate or explain code"
method: POST
path: "/code/completions"
tags: ["chat"]
---

# Generate or explain code

`POST /code/completions`

## Request

- Base URL: `https://api.krater.ai/v1`
- URL: `https://api.krater.ai/v1/code/completions`
- Auth: HTTP bearer

Generate, complete or explain code with top coding models. Accepts either a prompt string or an OpenAI-style messages array. Also available at /code/chat/completions.

## Request body

- object
  - `prompt` string: Instruction or code to complete. Alternative to messages.
  - `messages` ChatMessage[]: OpenAI-style conversation. Alternative to prompt.
    - `role` 'system' | 'user' | 'assistant' | 'tool', required
    - `content` string, required: Message text.
  - `model` string: Model identifier.
  - `language` string: Programming language hint.

## Response `200`

Code completion in an OpenAI chat-completion shape.

- ChatCompletionResponse
  - `id` string, required
  - `object` 'chat.completion', required
  - `created` integer: Unix timestamp.
  - `model` string
  - `choices` object[], required
    - `index` integer
    - `message` ChatMessage
      - `role` 'system' | 'user' | 'assistant' | 'tool', required
      - `content` string, required: Message text.
    - `finish_reason` string
  - `usage` object
    - `prompt_tokens` integer
    - `completion_tokens` integer
    - `total_tokens` integer

## Other responses

- `400`: Invalid request body or parameters.
- `401`: Missing or invalid API key. Pass Authorization: Bearer kr_live_...
- `402`: Not enough credits, or the API key's daily credit cap is reached.
- `429`: Rate limit exceeded (default 60 requests per minute per key). Includes a Retry-After header.

---

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