Plugins
Configure account-level plugin defaults such as Response Healing.
Overview
Plugins let you set account-wide defaults for optional request-time features. Today EUrouter supports Response Healing, which repairs malformed JSON from structured-output requests.
These settings apply as defaults to all API requests for the active account:
- A personal account when your personal workspace is active
- An organization account when an organization workspace is active and you have admin access
Individual requests can override account defaults with the plugins parameter unless you enable Prevent overrides for a plugin.
Response Healing
Response Healing attempts to fix syntactically invalid JSON returned by supported structured-output requests. It does not validate against your JSON Schema or force missing fields — it only repairs JSON syntax when the model output is close enough to parse after repair.
Dashboard default
In Plugins, enable Response Healing for your account and optionally turn on Prevent overrides so per-request plugins settings are ignored.
Per-request activation
Enable Response Healing on a single request with the plugins array:
{
"model": "gpt-4o",
"messages": [{ "role": "user", "content": "Return a JSON object with name and age." }],
"response_format": { "type": "json_object" },
"plugins": [{ "id": "response-healing" }]
}Disable it explicitly for one request even when your account default is on:
{
"plugins": [{ "id": "response-healing", "enabled": false }]
}Eligibility
Response Healing runs only for non-streaming structured-output requests:
| API | Supported structured output |
|---|---|
| Chat Completions | response_format.type of json_object or json_schema |
| Responses | the supported structured JSON equivalent for that endpoint |
It does not run for plain text completions, streaming responses, or requests without structured JSON output configured.
Precedence
- If Prevent overrides is enabled on the account default, the account setting always wins and request-level
pluginsentries for Response Healing are ignored. - Otherwise, an explicit per-request
pluginsentry overrides the account default. - If there is no per-request entry, the account default applies.
- If neither is set, Response Healing stays off.
Personal vs organization scope
- Personal workspace: any signed-in user can read and update their personal plugin defaults.
- Organization workspace: only organization admins (
org:manage) can change organization plugin defaults. Non-admins cannot access the settings controls.
The active workspace in the dashboard determines which account owns the default being edited.
Behavior and limitations
- Repairs are best-effort JSON syntax fixes, not schema validation.
- Valid JSON is returned unchanged.
- Unrepairable output is returned unchanged.
- Response Healing does not make an additional model call and does not add a separate charge.
Example: account default on, request override allowed
Account default:
{
"enabled": true,
"preventOverrides": false
}Request that turns healing off for one call:
{
"model": "gpt-4o",
"messages": [{ "role": "user", "content": "Return JSON." }],
"response_format": { "type": "json_object" },
"plugins": [{ "id": "response-healing", "enabled": false }]
}Example: prevent overrides enabled
Account default:
{
"enabled": true,
"preventOverrides": true
}A request that tries to disable healing is ignored — the account default remains in effect.
Related settings
- Configure defaults in the dashboard under Plugins
- API routes are proxied through the webapp; settings are stored and enforced by EUrouter core