Add OpenAI-compatible /v1/models endpoint to OpenCode Zen for automatic model discovery #1906

Closed
opened 2026-02-16 17:33:11 -05:00 by yindo · 2 comments
Owner

Originally created by @danilevy1212 on GitHub (Oct 1, 2025).

Originally assigned to: @fwang on GitHub.

problem

opencode zen currently doesn't expose a /v1/models endpoint, which prevents openai-compatible clients (like openwebui) from automatically discovering available models.

this forces users to manually add each model id to their client configuration, which is:

  • time-consuming (11+ models to add manually)
  • error-prone (typos in model ids)
  • not future-proof (requires manual updates when new models are added)

proposed solution

implement a /v1/models endpoint that returns an openai-compatible response listing all available opencode zen models.

endpoint: get /v1/models

response format (openai-compatible):

{
  "object": "list",
  "data": [
    {
      "id": "claude-3-5-haiku",
      "object": "model",
      "created": 1234567890,
      "owned_by": "anthropic"
    },
    {
      "id": "claude-sonnet-4",
      "object": "model",
      "created": 1234567890,
      "owned_by": "anthropic"
    }
  ]
}

the model data is already available at https://models.dev/api.json under .opencode.models, making implementation straightforward:

# current model list (11 models)
curl https://models.dev/api.json -s | jq '.opencode.models | keys'

use cases

this would enable openwebui and other openai-compatible clients to:

  • automatically discover available opencode zen models on startup
  • dynamically refresh model lists when new models are added
  • provide better ux without manual configuration
  • reduce support burden for integration issues

current workaround

building a local proxy server that:

  1. intercepts /v1/models requests
  2. fetches from models.dev/api.json
  3. transforms to openai-compatible format
  4. forwards all other requests to opencode

however, native support in opencode would be cleaner and more maintainable.

references

Originally created by @danilevy1212 on GitHub (Oct 1, 2025). Originally assigned to: @fwang on GitHub. ### problem opencode zen currently doesn't expose a `/v1/models` endpoint, which prevents openai-compatible clients (like [openwebui](https://github.com/open-webui/open-webui)) from automatically discovering available models. this forces users to manually add each model id to their client configuration, which is: - time-consuming (11+ models to add manually) - error-prone (typos in model ids) - not future-proof (requires manual updates when new models are added) ### proposed solution implement a `/v1/models` endpoint that returns an openai-compatible response listing all available opencode zen models. **endpoint:** `get /v1/models` **response format (openai-compatible):** ```json { "object": "list", "data": [ { "id": "claude-3-5-haiku", "object": "model", "created": 1234567890, "owned_by": "anthropic" }, { "id": "claude-sonnet-4", "object": "model", "created": 1234567890, "owned_by": "anthropic" } ] } ``` the model data is already available at `https://models.dev/api.json` under `.opencode.models`, making implementation straightforward: ```bash # current model list (11 models) curl https://models.dev/api.json -s | jq '.opencode.models | keys' ``` ### use cases this would enable openwebui and other openai-compatible clients to: - ✅ automatically discover available opencode zen models on startup - ✅ dynamically refresh model lists when new models are added - ✅ provide better ux without manual configuration - ✅ reduce support burden for integration issues ### current workaround building a local proxy server that: 1. intercepts `/v1/models` requests 2. fetches from `models.dev/api.json` 3. transforms to openai-compatible format 4. forwards all other requests to opencode however, native support in opencode would be cleaner and more maintainable. ### references - openai models api: https://platform.openai.com/docs/api-reference/models - models source: https://models.dev/api.json - openwebui integration docs: https://docs.openwebui.com/
yindo closed this issue 2026-02-16 17:33:11 -05:00
Author
Owner

@rekram1-node commented on GitHub (Oct 1, 2025):

makes sense, thanks for raising

@rekram1-node commented on GitHub (Oct 1, 2025): makes sense, thanks for raising
Author
Owner

@danilevy1212 commented on GitHub (Nov 1, 2025):

Looks like it works now!

curl -s https://opencode.ai/zen/v1/models | jq
{
  "object": "list",
  "data": [
    {
      "id": "claude-opus-4-1",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "claude-sonnet-4",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "claude-sonnet-4-5",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "claude-3-5-haiku",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "claude-haiku-4-5",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "gpt-5",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "gpt-5-codex",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "qwen3-coder",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "glm-4.6",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "big-pickle",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "an-gbt",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "kimi-k2",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "minimax-m2",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    },
    {
      "id": "grok-code",
      "object": "model",
      "created": 1762047082,
      "owned_by": "opencode"
    }
  ]
}
@danilevy1212 commented on GitHub (Nov 1, 2025): Looks like it works now! ```shell curl -s https://opencode.ai/zen/v1/models | jq { "object": "list", "data": [ { "id": "claude-opus-4-1", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "claude-sonnet-4", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "claude-sonnet-4-5", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "claude-3-5-haiku", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "claude-haiku-4-5", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "gpt-5", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "gpt-5-codex", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "qwen3-coder", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "glm-4.6", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "big-pickle", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "an-gbt", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "kimi-k2", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "minimax-m2", "object": "model", "created": 1762047082, "owned_by": "opencode" }, { "id": "grok-code", "object": "model", "created": 1762047082, "owned_by": "opencode" } ] } ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anomalyco/opencode#1906