# Chat Completions (OpenAI uyumlu)

OpenAI `POST /v1/chat/completions` ile uyumlu. Maskeleme açıkken istek gövdesindeki `messages` içeriğinde tespit edilen PII alanları model çağrısından önce yer tutuculara dönüştürülür. `stream: true` ile SSE streaming desteklenir.

POST `/v1/chat/completions`

## Request body

required `application/json`

`model` string required

Hedef model kimliği (panelde tanımlı).

`messages` ChatMessage[] required

min items 1

Array of `ChatMessage`

`role` string required

Allowed: `system` `user` `assistant` `tool`

`content` string required

Mesaj metni. Maskeleme açıkken tüm rollerin (`system`, `user`, `assistant`, `tool`) içeriğinde tespit edilen kişisel alanlar gateway içinde yer tutuculara dönüştürülür.

`stream` boolean

true ise yanıt SSE stream olarak döner.

default: false

`temperature` number

min 0 · max 2 · default: 1

`max_tokens` integer

Üretilecek azami token sayısı.

min 1

`top_p` number

min 0 · max 1

## Responses

200 Başarılı yanıt

`id` string

`object` string

`created` integer

`model` string

`choices` ChatChoice[]

Array of `ChatChoice`

`index` integer

`finish_reason` string

`message` ChatMessage

`role` string required

Allowed: `system` `user` `assistant` `tool`

`content` string required

Mesaj metni. Maskeleme açıkken tüm rollerin (`system`, `user`, `assistant`, `tool`) içeriğinde tespit edilen kişisel alanlar gateway içinde yer tutuculara dönüştürülür.

`usage` Usage

`prompt_tokens` integer

`completion_tokens` integer

`total_tokens` integer

401 Eksik veya geçersiz sanal anahtar

`error` object

`message` string

`type` string

413 Girdi maskeleme sınırını aşıyor. İstek modele iletilmez; metni bölüp yeniden gönderin.

`error` object

`message` string

`type` string

429 Kota/oran limiti aşıldı

`error` object

`message` string

`type` string

502 Maskeleme adımı çalıştırılamadı. İstek **fail-closed** olarak modele iletilmez; "maskesiz de olsa gönder" seçeneği yoktur.

`error` object

`message` string

`type` string

### Request

#### openai-python

```
from openai import OpenAI

client = OpenAI(
    base_url="https://gw-tr.gurubase.io/v1",
    api_key="SANAL_ANAHTAR",
)

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Ayşe Demir'in talebini özetle."},
    ],
)
print(resp.choices[0].message.content)
```

#### python

```
import requests

response = requests.post(
    "https://gw-tr.gurubase.io/v1/chat/completions",
    headers={
        "Content-Type": "application/json"
    },
    json={
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "string"
    }
  ],
  "stream": False,
  "temperature": 1,
  "max_tokens": 0,
  "top_p": 0
},
)
```

#### curl

```
curl -X POST "https://gw-tr.gurubase.io/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "string"
    }
  ],
  "stream": false,
  "temperature": 1,
  "max_tokens": 0,
  "top_p": 0
}'
```

#### js

```
const response = await fetch("https://gw-tr.gurubase.io/v1/chat/completions", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "gpt-4o-mini",
  "messages": [
    {
      "role": "system",
      "content": "string"
    }
  ],
  "stream": false,
  "temperature": 1,
  "max_tokens": 0,
  "top_p": 0
})
});
```

### Response

#### 200

```
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1718000000,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "system",
        "content": "string"
      }
    }
  ],
  "usage": {
    "prompt_tokens": 0,
    "completion_tokens": 0,
    "total_tokens": 0
  }
}
```

#### 401

```
{
  "error": {
    "message": "Sanal anahtar gerekli veya geçersiz.",
    "type": "invalid_request_error"
  }
}
```

#### 413

```
{
  "error": {
    "message": "string",
    "type": "string"
  }
}
```

#### 429

```
{
  "error": {
    "message": "string",
    "type": "string"
  }
}
```

#### 502

```
{
  "error": {
    "message": "string",
    "type": "string"
  }
}
```
