CommandCodeAI / CommandCodeAI/command-code

Provider API rejects response_format (400 Invalid input) even for DeepSeek json_object mode

Open
#685 1 comment 0 reactions 1 assignee View on GitHub

@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:

  1. With response_format400 Invalid input, param=response_format
  2. Without response_format200, content: {"answer": 42} (clean JSON)
  3. 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_format gets 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_format only when the prompt contains the literal word json — 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.