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

# Response Healing

> Corrija JSON malformado na saída de LLMs com o plugin response_healing no AI Gateway, consertando blocos de código, vírgulas finais e colchetes ausentes.

O **plugin** `response_healing` corrige JSON malformado na saída do modelo antes que a resposta chegue ao chamador. Modelos solicitados a gerar saída estruturada às vezes a envolvem em um bloco de código markdown, acrescentam uma frase de explicação ao redor ou emitem uma vírgula final. O plugin extrai e corrige o JSON para que a resposta possa ser interpretada.

> [!NOTE]
>
> Esta funcionalidade está em Beta.

## Casos de uso

* Obter saída estruturada confiável de modelos com menor aderência a JSON.
* Remover dos clientes da aplicação o código de limpeza de JSON específico de cada serviço.
* Recuperar chamadas de ferramentas cujos argumentos voltaram levemente malformados.

## Início rápido

Adicione uma entrada `response_healing` ao array `plugins`.

```bash cURL theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST https://router.toqan.ai/eu/v3/router/chat/completions \
  -H "Authorization: Bearer $TOQAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-5.4-mini",
    "messages": [{ "role": "user", "content": "List two colors as JSON." }],
    "response_format": { "type": "json_object" },
    "plugins": [{ "id": "response_healing" }]
  }'
```

```typescript TypeScript theme={"theme":{"light":"github-light","dark":"github-dark"}}
import OpenAI from 'openai';

const client = new OpenAI({
  apiKey: process.env.TOQAN_API_KEY,
  baseURL: 'https://router.toqan.ai/eu/v3/router',
});

const response = await client.chat.completions.create({
  model: 'openai/gpt-5.4-mini',
  messages: [{ role: 'user', content: 'List two colors as JSON.' }],
  response_format: { type: 'json_object' },
  // @ts-ignore - Toqan Router extension
  plugins: [{ id: 'response_healing' }],
});
```

```python Python theme={"theme":{"light":"github-light","dark":"github-dark"}}
from openai import OpenAI
import os

client = OpenAI(
    api_key=os.environ.get("TOQAN_API_KEY"),
    base_url="https://router.toqan.ai/eu/v3/router",
)

response = client.chat.completions.create(
    model="openai/gpt-5.4-mini",
    messages=[{"role": "user", "content": "List two colors as JSON."}],
    response_format={"type": "json_object"},
    extra_body={"plugins": [{"id": "response_healing"}]},
)
```

O plugin não requer configuração.

`response-healing`, a grafia com hífen usada pelo OpenRouter, é aceita como alias de `response_healing`. Payloads migrados do OpenRouter funcionam sem edições.

## O que é corrigido

| Problema | Saída do modelo | Resposta |
| - | - | - |
| Bloco de código markdown | JSON envolvido em um bloco ` ```json ` | `{"a": 1}` |
| JSON incorporado em texto | `Here you go: {"a": 1} Hope that helps.` | `{"a": 1}` |
| Colchete de fechamento ausente | `{"a": 1` | `{"a": 1}` |
| Vírgula final | `{"a": 1,}` | `{"a": 1}` |
| Chaves sem aspas | `{a: 1}` | `{"a": 1}` |
| Strings com aspas simples | `{'a': 'b'}` | `{"a": "b"}` |

## Quando se aplica

O plugin corrige duas coisas:

* **Conteúdo da mensagem**, apenas quando a requisição pede JSON. Em `/v3/router/chat/completions`, isso significa que `response_format` é `json_object` ou `json_schema`. Em `/v3/router/responses`, significa que `text.format` declara `type: json_schema` ou traz um corpo `schema` inline não vazio sem um tipo explícito. Requisições que pedem texto simples nunca são modificadas.
* **Argumentos de chamadas de ferramentas**, sempre que o plugin estiver habilitado. Os argumentos são JSON por definição, portanto nenhum `response_format` é necessário.

## Limites

* **Apenas requisições sem streaming.** Os chunks transmitidos chegam ao chamador antes que o corpo completo seja conhecido, então não sobra nada para corrigir. Definir o plugin em uma requisição com streaming não tem efeito.
* **Saídas truncadas por `max_tokens` podem ser irrecuperáveis.** Uma resposta cortada no meio de uma string não pode ser reconstruída.
* **Saídas que não podem ser corrigidas passam sem alterações.** O plugin nunca faz uma requisição falhar e nunca substitui JSON válido.

## Habilitar para um workspace

Habilite o response healing para todas as requisições em **Settings** > **Plugins**, sem passar um array `plugins` em cada chamada. Depois de habilitado, ele se aplica automaticamente a todas as chamadas que ainda não especificam um plugin `response_healing`.

## Aplicar por routing rule

Anexe uma entrada `response_healing` a uma [Routing Rule](/docs/pt-BR/ai-gateway/configuration/routing-rules.md) para executar a correção no tráfego que essa regra corresponde.

## Endpoints compatíveis

* [`POST /v3/router/responses`](/docs/pt-BR/reference/responses/create-response)
* [`POST /v3/router/chat/completions`](/docs/pt-BR/reference/chat/create-chat-completion)


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