Skip to content

Groq models fail with json_schema and web_search tool schema errors after 1.12.1 update #980

@pfjarschel

Description

@pfjarschel

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'
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions