CommandCodeAI / CommandCodeAI/command-code
Provider API rejects response_format (400 Invalid input) even for DeepSeek json_object mode
@ahmadbilaldev is already working on this.
Since Aug 18, 2026.
- Dominant language
- No language data
- Stars
- 4k
- Forks
- 350
- PR merge metrics
- No merged PRs in 30d
Description
Summary
The Provider API (https://api.commandcode.ai/provider/v1/chat/completions) rejects the standard OpenAI response_format parameter with HTTP 400 — even for {"type": "json_object"}, which the underlying DeepSeek API supports natively. This breaks every OpenAI-compatible client that sends response_format (OpenAI SDK, Vercel AI SDK, Pydantic structured output, agent harnesses), not just the Command Code CLI.
Expected Behavior
response_format: {"type": "json_object"} (DeepSeek JSON mode) should be passed through to the upstream model, since DeepSeek's own Chat Completions API documents and supports json_object. The Provider API claims OpenAI Chat Completions schema compatibility, so OpenAI-standard request parameters should be accepted or at least documented as unsupported — not rejected with a generic 400.
Actual Behavior
HTTP 400 with a double-wrapped error:
{"error":{"message":"{\"error\":{\"message\":\"Invalid input\",\"type\":\"invalid_request_error\",\"param\":\"response_format\",\"code\":\"invalid_request_error\"}}","type":"invalid_request_error"}}
The same request without response_format succeeds (200) and the model returns clean JSON when the prompt asks for it.
Steps to reproduce the issue
curl https://api.commandcode.ai/provider/v1/chat/completions \
-H "Authorization: Bearer $CMD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-pro",
"messages": [{"role": "user", "content": "Return JSON only: {\"answer\": 42}"}],
"response_format": {"type": "json_object"},
"max_completion_tokens": 64
}'
Observed:
- With
response_format→400 Invalid input, param=response_format - Without
response_format→200,content: {"answer": 42}(clean JSON) - Same request shape against DeepSeek official API with
response_format: {"type":"json_object"}→ works (200)
Command Code Version
Provider API (api.commandcode.ai/provider/v1) — not the CLI; no CLI version involved.
Operating System
Linux
Terminal/IDE
n/a (HTTP API test)
Shell
bash
Fix prompt (optional)
In the Provider API gateway, allow response_format: {"type": "json_object"} to pass through to DeepSeek upstream (DeepSeek Chat Completions supports it). If pass-through of json_schema is out of scope for now, at minimum accept json_object and document which response_format variants are supported on the Provider API docs page. A quick check: replay the curl above against the upstream after the fix and expect HTTP 200.
Additional context
- Impact: any agent harness / SDK sending
response_formatgets 400 on the Pro route; the workaround (omit the parameter and rely on prompt instructions) is fragile because the model's JSON validity is no longer guaranteed by the API. - Related behavior: the opencode.ai zen/go route accepts
response_formatonly when the prompt contains the literal wordjson— also worth documenting. - Note: this issue is about the Provider API endpoint (
/provider/v1/chat/completions), not the CLI — there is no separate Provider API bug tracker, so filing here.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.