-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Description
Description
After updating to the latest Perplexica version, all my Groq-based providers that were working minutes before the upgrade started failing with structured-output–related errors. Downgrading to the 1.11.2 version immediately fixes the problem, using the exact same Groq key and models.
Environment
- Perplexica version: 1.12.1
- Deployment: Docker (docker-compose)
- Provider: Groq
- Models used:
- openai/gpt-oss-20b (GPT-OSS)
- moonshotai/kimi-k2-instruct (KIMI K2)
- meta-llama/llama-4-maverick-17b-128e-instruct (Llama 4 Maverick)
All of these models support json_schema structured outputs in Groq’s docs.
What happens
SearXNG and Perplexica start normally, but on the first query using a Groq model, nothing happens visually (stuck in Brainstorming), but there is this message in the logs:
Error: 400 This model does not support response format `json_schema`. See supported models at https://console.groq.com/docs/structured-outputs#supported-models
at f.generate (.../chunks/607.js:20:19183)
at cX.makeStatusError (.../chunks/607.js:27:51395)
at cX.makeRequest (.../chunks/607.js:27:54864)
at async M.generateObject (.../chunks/136.js:1:3636)
at async h (.../chunks/641.js:464:844)
at async m.searchAsync (.../app/api/chat/route.js:1:12737)
This repeats for each request, even though the models used are listed as supporting json_schema in Groq’s documentation.
Then there is another error, appears to be related to tools:
Error: tool call validation failed: parameters for tool web_search did not match schema: errors: [missing properties: 'type']
at bf.f [as iterator] (.../chunks/607.js:20:27895)
at async M.streamText (.../chunks/136.js:1:3089)
at async i.research (.../chunks/641.js:541:227)
at async m.searchAsync (.../app/api/chat/route.js:1:13218)
code: 'tool_use_failed'
type: 'invalid_request_error'
What I expected
Queries using supported Groq models with structured outputs to work as before the update.
Tool calls to web_search to respect the current schema and not fail on a missing type property.
What I tried
- Switching between multiple Groq models (GPT-OSS, KIMI K2, Llama 4 Maverick): all fail with the same json_schema error.
- Restarting containers and recreating volumes.
- Downgrading Perplexica to the 1.11.2 version: with the same Groq configuration, everything works again (no errors, normal search and answers).
- Downgrading Perplexica to the 1.12.0 version: Mostly works, but there are some other, possibly unrelated issues (search engines get blocked very quickly, sometimes query fails without any call to the Groq API).
- I haven't tried other cloud providers.
Hypothesis
It looks like the latest Perplexica release changed:
- How response_format: { type: "json_schema", ... } is applied to Groq models, possibly without checking model capabilities or without using the exact model IDs/flags Groq expects.
- The web_search tool schema (adding a required type property) without updating the caller, so tool calls now fail validation with tool_use_failed.
Both issues only appear on the latest version and disappear after downgrading.
Logs
Here are the complete logs for the session:
Starting SearXNG...
Waiting for SearXNG to be ready...
2026-01-12 19:30:12,256 ERROR:searx.engines: loading engine ahmia failed: set engine to inactive!
2026-01-12 19:30:12,385 ERROR:searx.engines: loading engine torch failed: set engine to inactive!
* Serving Flask app 'searx/webapp.py'
* Debug mode: off
2026-01-12 19:30:15,605 ERROR:searx.botdetection: X-Forwarded-For nor X-Real-IP header is set!
SearXNG started successfully (PID: 9)
Starting Perplexica...
▲ Next.js 16.0.7
- Local: http://a2fe1a74528d:3000
- Network: http://a2fe1a74528d:3000
✓ Starting...
Running database migrations...
Skipping already-applied migration: 0000_fuzzy_randall.sql
Skipping already-applied migration: 0001_wise_rockslide.sql
Skipping already-applied migration: 0002_daffy_wrecker.sql
Database migrations completed successfully
✓ Ready in 92ms
Error: 400 This model does not support response format `json_schema`. See supported models at https://console.groq.com/docs/structured-outputs#supported-models
at f.generate (.next/server/chunks/607.js:20:19183)
at cX.makeStatusError (.next/server/chunks/607.js:27:51395)
at cX.makeRequest (.next/server/chunks/607.js:27:54864)
at async M.generateObject (.next/server/chunks/136.js:1:3636)
at async h (.next/server/chunks/641.js:464:844)
at async m.searchAsync (.next/server/app/api/chat/route.js:1:12737) {
status: 400,
headers: Headers {
date: 'Mon, 12 Jan 2026 19:31:47 GMT',
'content-type': 'application/json',
'content-length': '230',
connection: 'keep-alive',
'cf-ray': '9bcf137bef4f4292-VCP',
'cache-control': 'private, max-age=0, no-store, no-cache, must-revalidate',
vary: 'Origin',
'x-groq-region': 'bra',
'x-request-id': 'req_01kesv2tbve84sxnd0eks0nejr',
via: '1.1 google',
'cf-cache-status': 'DYNAMIC',
'set-cookie': '__cf_bm=jtP_hJFiKVDsb_KbRrupAnZpLl1Gr9NV1Ne7C5sHbwE-1768246307-1.0.1.1-T6k_qFeXnaHIz5mgtM8Tyq6lSliLwIn2buklH3Is86NmiCMvW_bnVOrcBg_9x34bYMPFUoy.i75C0qtQUlpPh9vX66oW6cvgok
0pLYFPr5U; path=/; expires=Mon, 12-Jan-26 20:01:47 GMT; domain=.groq.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=15552000',
server: 'cloudflare',
'alt-svc': 'h3=":443"; ma=86400'
},
requestID: 'req_01kesv2tbve84sxnd0eks0nejr',
error: [Object],
code: undefined,
param: 'response_format',
type: 'invalid_request_error'
}
⨯ unhandledRejection: Error: 400 This model does not support response format `json_schema`. See supported models at https://console.groq.com/docs/structured-outputs#supported-models
at f.generate (.next/server/chunks/607.js:20:19183)
at cX.makeStatusError (.next/server/chunks/607.js:27:51395)
at cX.makeRequest (.next/server/chunks/607.js:27:54864)
at async M.generateObject (.next/server/chunks/136.js:1:3636)
at async h (.next/server/chunks/641.js:464:844)
at async m.searchAsync (.next/server/app/api/chat/route.js:1:12737) {
status: 400,
headers: Headers {
date: 'Mon, 12 Jan 2026 19:31:47 GMT',
'content-type': 'application/json',
'content-length': '230',
connection: 'keep-alive',
'cf-ray': '9bcf137bef4f4292-VCP',
'cache-control': 'private, max-age=0, no-store, no-cache, must-revalidate',
vary: 'Origin',
'x-groq-region': 'bra',
'x-request-id': 'req_01kesv2tbve84sxnd0eks0nejr',
via: '1.1 google',
'cf-cache-status': 'DYNAMIC',
'set-cookie': '__cf_bm=jtP_hJFiKVDsb_KbRrupAnZpLl1Gr9NV1Ne7C5sHbwE-1768246307-1.0.1.1-T6k_qFeXnaHIz5mgtM8Tyq6lSliLwIn2buklH3Is86NmiCMvW_bnVOrcBg_9x34bYMPFUoy.i75C0qtQUlpPh9vX66oW6cvgok
0pLYFPr5U; path=/; expires=Mon, 12-Jan-26 20:01:47 GMT; domain=.groq.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=15552000',
server: 'cloudflare',
'alt-svc': 'h3=":443"; ma=86400'
},
requestID: 'req_01kesv2tbve84sxnd0eks0nejr',
error: [Object],
code: undefined,
param: 'response_format',
type: 'invalid_request_error'
}
Error: 400 This model does not support response format `json_schema`. See supported models at https://console.groq.com/docs/structured-outputs#supported-models
at f.generate (.next/server/chunks/607.js:20:19183)
at cX.makeStatusError (.next/server/chunks/607.js:27:51395)
at cX.makeRequest (.next/server/chunks/607.js:27:54864)
at async M.generateObject (.next/server/chunks/136.js:1:3636)
at async h (.next/server/chunks/641.js:464:844)
at async m.searchAsync (.next/server/app/api/chat/route.js:1:12737) {
status: 400,
headers: Headers {
date: 'Mon, 12 Jan 2026 19:32:55 GMT',
'content-type': 'application/json',
'content-length': '230',
connection: 'keep-alive',
'cf-ray': '9bcf15268b584293-VCP',
'cache-control': 'private, max-age=0, no-store, no-cache, must-revalidate',
vary: 'Origin',
'x-groq-region': 'bra',
'x-request-id': 'req_01kesv4x14eptanxe44mfxndqd',
via: '1.1 google',
'cf-cache-status': 'DYNAMIC',
'set-cookie': '__cf_bm=AwxBo2U51m8khHAx3TPmbXRHVrDRBk3G7nLSZBsEFKA-1768246375-1.0.1.1-2ipUeEYn.NixbCYYMofApTbyS02oKlDZX8WpGN3Xl8twVthSMx8lHd1GBZS0bQamwtWOG6yiverHhfzujUw0EQteGSjMzKSC9K
iQ54ioBxE; path=/; expires=Mon, 12-Jan-26 20:02:55 GMT; domain=.groq.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=15552000',
server: 'cloudflare',
'alt-svc': 'h3=":443"; ma=86400'
},
requestID: 'req_01kesv4x14eptanxe44mfxndqd',
error: [Object],
code: undefined,
param: 'response_format',
type: 'invalid_request_error'
}
⨯ unhandledRejection: Error: 400 This model does not support response format `json_schema`. See supported models at https://console.groq.com/docs/structured-outputs#supported-models
at f.generate (.next/server/chunks/607.js:20:19183)
at cX.makeStatusError (.next/server/chunks/607.js:27:51395)
at cX.makeRequest (.next/server/chunks/607.js:27:54864)
at async M.generateObject (.next/server/chunks/136.js:1:3636)
at async h (.next/server/chunks/641.js:464:844)
at async m.searchAsync (.next/server/app/api/chat/route.js:1:12737) {
status: 400,
headers: Headers {
date: 'Mon, 12 Jan 2026 19:32:55 GMT',
'content-type': 'application/json',
'content-length': '230',
connection: 'keep-alive',
'cf-ray': '9bcf15268b584293-VCP',
'cache-control': 'private, max-age=0, no-store, no-cache, must-revalidate',
vary: 'Origin',
'x-groq-region': 'bra',
'x-request-id': 'req_01kesv4x14eptanxe44mfxndqd',
via: '1.1 google',
'cf-cache-status': 'DYNAMIC',
'set-cookie': '__cf_bm=AwxBo2U51m8khHAx3TPmbXRHVrDRBk3G7nLSZBsEFKA-1768246375-1.0.1.1-2ipUeEYn.NixbCYYMofApTbyS02oKlDZX8WpGN3Xl8twVthSMx8lHd1GBZS0bQamwtWOG6yiverHhfzujUw0EQteGSjMzKSC9K
iQ54ioBxE; path=/; expires=Mon, 12-Jan-26 20:02:55 GMT; domain=.groq.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=15552000',
server: 'cloudflare',
'alt-svc': 'h3=":443"; ma=86400'
},
requestID: 'req_01kesv4x14eptanxe44mfxndqd',
error: [Object],
code: undefined,
param: 'response_format',
type: 'invalid_request_error'
}
Error: tool call validation failed: parameters for tool web_search did not match schema: errors: [missing properties: 'type']
at bf.f [as iterator] (.next/server/chunks/607.js:20:27895)
at async M.streamText (.next/server/chunks/136.js:1:3089)
at async i.research (.next/server/chunks/641.js:541:227)
at async m.searchAsync (.next/server/app/api/chat/route.js:1:13218) {
status: undefined,
headers: Headers {
date: 'Mon, 12 Jan 2026 19:34:06 GMT',
'content-type': 'text/event-stream',
'transfer-encoding': 'chunked',
connection: 'keep-alive',
'cf-ray': '9bcf16e19c5f4292-VCP',
'cache-control': 'no-cache',
vary: 'Origin',
'x-groq-region': 'bra',
'x-ratelimit-limit-requests': '500000',
'x-ratelimit-limit-tokens': '250000',
'x-ratelimit-remaining-requests': '499999',
'x-ratelimit-remaining-tokens': '248367',
'x-ratelimit-reset-requests': '172ms',
'x-ratelimit-reset-tokens': '391ms',
'x-request-id': 'req_01kesv7291eqf85rpfh3w5xf4g',
via: '1.1 google',
'cf-cache-status': 'DYNAMIC',
'set-cookie': '__cf_bm=.Q_selQ6IHgefUKPO2khiqMIVmt4hgIfKU0_hELNXwg-1768246446-1.0.1.1-AR4vvKo1mH_3oyemG_ZCevMdq8DuObZOaZ5E5BvAJ.z_b7svpibeUr2eU1ECwYdhn9c9EnOUHqf0Ii6eJ5FDaHb8GpuBYLQJtw
tpIswdQnk; path=/; expires=Mon, 12-Jan-26 20:04:06 GMT; domain=.groq.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=15552000',
server: 'cloudflare',
'alt-svc': 'h3=":443"; ma=86400'
},
requestID: 'req_01kesv7291eqf85rpfh3w5xf4g',
error: [Object],
code: 'tool_use_failed',
param: undefined,
type: 'invalid_request_error'
}
⨯ unhandledRejection: Error: tool call validation failed: parameters for tool web_search did not match schema: errors: [missing properties: 'type']
at bf.f [as iterator] (.next/server/chunks/607.js:20:27895)
at async M.streamText (.next/server/chunks/136.js:1:3089)
at async i.research (.next/server/chunks/641.js:541:227)
at async m.searchAsync (.next/server/app/api/chat/route.js:1:13218) {
status: undefined,
headers: Headers {
date: 'Mon, 12 Jan 2026 19:34:06 GMT',
'content-type': 'text/event-stream',
'transfer-encoding': 'chunked',
connection: 'keep-alive',
'cf-ray': '9bcf16e19c5f4292-VCP',
'cache-control': 'no-cache',
vary: 'Origin',
'x-groq-region': 'bra',
'x-ratelimit-limit-requests': '500000',
'x-ratelimit-limit-tokens': '250000',
'x-ratelimit-remaining-requests': '499999',
'x-ratelimit-remaining-tokens': '248367',
'x-ratelimit-reset-requests': '172ms',
'x-ratelimit-reset-tokens': '391ms',
'x-request-id': 'req_01kesv7291eqf85rpfh3w5xf4g',
via: '1.1 google',
'cf-cache-status': 'DYNAMIC',
'set-cookie': '__cf_bm=.Q_selQ6IHgefUKPO2khiqMIVmt4hgIfKU0_hELNXwg-1768246446-1.0.1.1-AR4vvKo1mH_3oyemG_ZCevMdq8DuObZOaZ5E5BvAJ.z_b7svpibeUr2eU1ECwYdhn9c9EnOUHqf0Ii6eJ5FDaHb8GpuBYLQJtw
tpIswdQnk; path=/; expires=Mon, 12-Jan-26 20:04:06 GMT; domain=.groq.com; HttpOnly; Secure; SameSite=None',
'strict-transport-security': 'max-age=15552000',
server: 'cloudflare',
'alt-svc': 'h3=":443"; ma=86400'
},
requestID: 'req_01kesv7291eqf85rpfh3w5xf4g',
error: [Object],
code: 'tool_use_failed',
param: undefined,
type: 'invalid_request_error'
}