> ## Documentation Index
> Fetch the complete documentation index at: https://docs.portkey.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Chat Completions

> Use OpenAI-compatible Chat Completions with any LLM provider through Prisma AIRS AI Gateway.

The [Chat Completions](https://platform.openai.com/docs/api-reference/chat) API is the most widely adopted format for LLM interaction. The AI Gateway makes it work with **every provider** — send the same `POST /v1/chat/completions` request to OpenAI, Anthropic, Gemini, Bedrock, or any of the 3,000+ supported models.

## Quick Start

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -d '{
    "model": "@openai-provider/gpt-4o",
    "messages": [{"role": "user", "content": "Explain quantum computing in simple terms"}]
  }'
```

> [!NOTE]
>
> Switch `model` to use any provider — `@anthropic-provider/claude-sonnet-4-5-20250514`, `@google-provider/gemini-2.0-flash`, or any of the 3,000+ supported models.

### Using the OpenAI SDK

Point the OpenAI SDK at the AI Gateway's base URL and all Chat Completions methods work unchanged:

```python OpenAI Python SDK theme={"system"}
from openai import OpenAI

client = OpenAI(
    api_key="PORTKEY_API_KEY",
    base_url="https://aigw.portkey.ai/v1"
)

response = client.chat.completions.create(
    model="@openai-provider/gpt-4o",
    messages=[{"role": "user", "content": "Explain quantum computing in simple terms"}]
)

print(response.choices[0].message.content)
```

```javascript OpenAI Node SDK theme={"system"}
import OpenAI from 'openai';

const client = new OpenAI({
    apiKey: "PORTKEY_API_KEY",
    baseURL: "https://aigw.portkey.ai/v1"
});

const response = await client.chat.completions.create({
    model: "@openai-provider/gpt-4o",
    messages: [{ role: "user", content: "Explain quantum computing in simple terms" }]
});

console.log(response.choices[0].message.content);
```

## System Messages

Set a system prompt using the `system` role in the messages array:

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -d '{
    "model": "@openai-provider/gpt-4o",
    "messages": [
      {"role": "system", "content": "You are a pirate. Always respond in pirate speak."},
      {"role": "user", "content": "Say hello."}
    ]
  }'
```

## Streaming

Stream responses token-by-token with `stream: true`.

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -d '{
    "model": "@openai-provider/gpt-4o",
    "messages": [{"role": "user", "content": "Write a haiku about AI"}],
    "stream": true
  }'
```

## Function Calling

Define tools with the `tools` parameter. Works across all providers that support function calling.

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -d '{
    "model": "@openai-provider/gpt-4o",
    "messages": [{"role": "user", "content": "What'\''s the weather in San Francisco?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_weather",
        "description": "Get current weather for a location",
        "parameters": {
          "type": "object",
          "properties": {
            "location": {"type": "string", "description": "City name"}
          },
          "required": ["location"]
        }
      }
    }]
  }'
```

### Function Call Results

Pass tool results back to continue the conversation:

## Vision

Send images in the `content` array using the `image_url` type. Works with all vision-capable models.

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -d '{
    "model": "@openai-provider/gpt-4o",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "Describe this image"},
        {"type": "image_url", "image_url": {"url": "https://example.com/image.jpg"}}
      ]
    }]
  }'
```

Base64-encoded images are also supported — pass a data URL as the `url` value:

```python Python theme={"system"}
{"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,/9j/4AAQ..."}}
```

## Structured Output

### JSON Schema

Force the model to return structured JSON matching a specific schema:

### JSON Mode

For free-form JSON output without a strict schema:

## Multi-turn Conversations

Pass the full conversation history in the `messages` array:

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -d '{
    "model": "@openai-provider/gpt-4o",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "My name is Alice."},
      {"role": "assistant", "content": "Hello Alice! How can I help you?"},
      {"role": "user", "content": "What is my name?"}
    ]
  }'
```

## Using with AI Gateway Features

Chat Completions works with all AI Gateway features:

* **[Configs](https://docs.portkey.ai/docs/aigw/product/ai-gateway/configs.md)** -- Route, load balance, and set fallbacks
* **[Caching](https://docs.portkey.ai/docs/aigw/product/ai-gateway/cache-simple-and-semantic.md)** -- Cache responses for faster, cheaper calls
* **[Guardrails](https://docs.portkey.ai/docs/aigw/product/guardrails.md)** -- Add input/output guardrails
* **[Observability](https://docs.portkey.ai/docs/aigw/product/observability.md)** -- Full logging and tracing

```sh cURL theme={"system"}
curl https://aigw.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $PORTKEY_API_KEY" \
  -H "x-portkey-config: pp-config-xxx" \
  -d '{
    "model": "gpt-4o",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
```

## API Reference

* [Chat Completions](https://docs.portkey.ai/docs/aigw/api-reference/chat/create-chat-completion.md) -- `POST /v1/chat/completions`

> **[OpenAI Chat API Docs](https://platform.openai.com/docs/api-reference/chat)**
>
> OpenAI specification

> **[API Reference](https://docs.portkey.ai/docs/aigw/api-reference/chat/create-chat-completion.md)**
>
> AI Gateway Chat Completions reference

> **[Universal API](https://docs.portkey.ai/docs/aigw/product/ai-gateway/universal-api.md)**
>
> All three API formats

> **[Function Calling Guide](https://docs.portkey.ai/docs/aigw/product/ai-gateway/multimodal-capabilities/function-calling.md)**
>
> Detailed function calling guide


## Related topics

- [Lepton AI](https://docs.portkey.ai/docs/aigw/integrations/llms/lepton.md)
- [Nscale (EU Sovereign)](https://docs.portkey.ai/docs/aigw/integrations/llms/nscale.md)
- [Text-to-Speech](https://docs.portkey.ai/docs/aigw/product/ai-gateway/multimodal-capabilities/text-to-speech.md)
- [Create chat completion](https://docs.portkey.ai/docs/aigw/api-reference/chat/create-chat-completion.md)
- [LibreChat](https://docs.portkey.ai/docs/aigw/integrations/libraries/librechat.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.