---
title: gpt-oss-safeguard-20b | Runware Docs
url: https://runware.ai/docs/models/openai-gpt-oss-safeguard-20b
description: Open-weight safety classifier that judges content against the policy you write in the prompt
---
# gpt-oss-safeguard-20b

![gpt-oss-safeguard-20b](https://assets.runware.ai/covers/openai-gpt-oss-safeguard-20b.jpg)

gpt-oss-safeguard-20b is OpenAI’s open-weight safety classifier. Instead of a fixed taxonomy, it takes the policy in the prompt and labels each item against it, so the same model can serve teams whose rules differ. It reasons before answering, which leaves a trace of why an item was labelled the way it was, and its 8K context window holds a policy alongside the content under review. It fits moderation pipelines and review queues where the rules change per product or per customer.

- **Status**: compatible-only
- **ID**: `openai-gpt-oss-safeguard-20b`
- **Context window**: 8K context
- **Creator**: OpenAI
- **Release Date**: October 29, 2025
- **Zero Data Retention**: Yes
- **Capabilities**: Text to Text, Moderation, Checkpoint

**gpt-oss-safeguard-20b** is served through Runware's **compatible endpoints**, which take another provider's request format. Point the SDK you already use at Runware by changing the base URL and the API key, and set `model` to `openai:gpt-oss-safeguard@20b`.

Requests and responses keep the provider's format, so **its reference documents every parameter**.

| Endpoint | Format |
| --- | --- |
| `/v1/chat/completions` | [OpenAI Chat Completions](https://runware.ai/docs/tools/compatible-apis#openai-chat-completions) |

### [Chat Completions](https://runware.ai/docs/models/openai-gpt-oss-safeguard-20b#chat-completions)

**cURL**:

```bash
curl -X POST https://api.runware.ai/v1/chat/completions \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai:gpt-oss-safeguard@20b",
    "messages": [{"role": "user", "content": "What is the capital of France?"}]
  }'
```

**Python**:

```python
from openai import OpenAI

client = OpenAI(
    api_key="your_runware_api_key",
    base_url="https://api.runware.ai/v1",
)

response = client.chat.completions.create(
    model="openai:gpt-oss-safeguard@20b",
    messages=[{"role": "user", "content": "What is the capital of France?"}],
)

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

**TypeScript**:

```typescript
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: 'your_runware_api_key',
  baseURL: 'https://api.runware.ai/v1',
});

const response = await client.chat.completions.create({
  model: 'openai:gpt-oss-safeguard@20b',
  messages: [{ role: 'user', content: 'What is the capital of France?' }],
});

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

**Vercel AI SDK**:

```typescript
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
import { generateText } from 'ai';

const runware = createOpenAICompatible({
  name: 'runware',
  apiKey: 'your_runware_api_key',
  baseURL: 'https://api.runware.ai/v1',
});

const { text } = await generateText({
  model: runware('openai:gpt-oss-safeguard@20b'),
  prompt: 'What is the capital of France?',
});

console.log(text);
```

**LangChain**:

```python
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="openai:gpt-oss-safeguard@20b",
    api_key="your_runware_api_key",
    base_url="https://api.runware.ai/v1",
)

response = llm.invoke("What is the capital of France?")

print(response.text)
```

[Compatible APIs](https://runware.ai/docs/tools/compatible-apis#openai-chat-completions) covers streaming, tool calling and how the endpoint differs from OpenAI, and the [OpenAI API reference](https://platform.openai.com/docs/api-reference/chat/create) lists every parameter.

## Cost and speed

**Rates** (per 1M tokens)

- Input: `$0.07`
- Output: `$0.28`
- Cached input: `$0.035`

billed per token, so a request costs what the model produced · [How pricing works](https://runware.ai/docs/models-api/pricing)