Clients/DeepSeek Harness

Use the Wokey API with DeepSeek Harness

Get a Wokey API key, point DeepSeek Harness at the Wokey base URL, then confirm the connection with one curl request.

Updated

On this pageexpand_more

Get an API key and the base URLlink

Every client uses the same Wokey API key and the same base URL.

Create an API key

Sign in and create a platform key on the API page. Keys in one account share its balance.

Create an API keykey

Use the Wokey base URL

Set the client base URL to the gateway domain; the configuration below shows whether to append /v1.

Configure the clientlink

DeepSeek Harness (dsh) accepts custom gateways, so one Wokey key covers DeepSeek, GPT, GLM and Claude models. deepseek-v4.1-flash supports Chat Completions, Responses, and Anthropic Messages; the configuration below puts Claude Opus 5.5 and DeepSeek-V4.1-Flash under one Anthropic Messages provider and declares image input for both.

  1. 1

    Install the 0.2.1 pre-release

    npm’s latest tag is still 0.2.0; DeepSeek recommends v0.2.1-rc.1 or later for V4.1-Flash-1017, so install @next.

  2. 2

    Set the API key variable

    The config only names apiKeyEnv, so the key never lands in the file. You can also save the key under Settings → Models in the web UI.

  3. 3

    Add the provider

    Edit ~/.dsh/profiles/web/cordis.patch.yml (profiles/headless for dsh headless). This example uses Anthropic Messages for both models, with https://api.wokey.ai as the base URL. If you choose OpenAI Chat Completions instead, create a separate provider and use https://api.wokey.ai/v1.

  4. 4

    Declare image input

    DeepSeek Harness treats an undeclared custom model as text-only, so it can reject an image before Wokey sees the request even when the Wokey model supports vision. For Opus 5.5, Haiku 5.5, or any other vision model, add input: [text, image] under that model; in the UI use Settings → Models → edit the provider → Customized settings → expand the model row → Input types → Image. Save, then start a new session.

  5. 5

    Keep existing providers

    This override replaces the whole llm-pi-ai entry config, so if you already added providers in the UI, list them under providers too. Use spaces for every input indent and do not mix tabs into the YAML. Start a new session after saving.

DeepSeek Harness
# 1. Install or update to 0.2.1
npm install -g @deepseek-ai/dsh@next
export WOKEY_API_KEY="YOUR_API_KEY"

# 2. ~/.dsh/profiles/web/cordis.patch.yml
- id: llm-pi-ai
  config:
    providers:
      wokey:
        displayName: Wokey
        apiKeyEnv: WOKEY_API_KEY
        api: anthropic-messages
        baseURL: https://api.wokey.ai
        models:
          - id: claude-opus-5-5
            name: Claude Opus 5.5
            contextWindow: 1000000
            input: [text, image]
          - id: deepseek-v4.1-flash
            name: DeepSeek-V4.1-Flash
            contextWindow: 1000000
            maxTokens: 393216
            input: [text, image]
- id: agent-default-model
  config:
    provider: wokey
    model: claude-opus-5-5

# 3. Start
dsh web

API formats and base URLslink

When one client switches API format, whether the base URL ends in /v1 can change.

FormatBase URLUse it for
OpenAI Chat Completionshttps://api.wokey.ai/v1DeepSeek, GLM, Kimi, and other models
Anthropic Messageshttps://api.wokey.aiClaude models

Where it is configured: ~/.dsh/profiles/web/cordis.patch.yml

Search / Fetch charges and Wokey supportlink

Wokey provides the model inference interfaces listed on this page, not standalone /v1/tools/search or /v1/tools/fetch endpoints. Tool calling support does not imply support for every upstream built-in web tool. Server-side search within model requests depends on the actual supply route and is not currently listed as a verified, uniformly supported Wokey capability; this page publishes no Wokey per-call Search/Fetch price. For documented standalone search and fetch support, use a DeepSeek API key with api.deepseek.com, configured and billed separately from Wokey model calls.

Official fees, November 1 changes and support details

Common troubleshootinglink

  • “The current model does not support images”: this is Harness’s local capability gate; it does not mean Wokey or Opus 5.5 lacks vision. Enable Image for that model, or add input: [text, image] to its YAML entry.
  • Images are still rejected after saving: start a new session and select the model again; an existing session keeps its recorded model capability and attachments.
  • The image request returns 400: match the protocol and base URL. Anthropic Messages uses https://api.wokey.ai without /v1; OpenAI Chat Completions uses https://api.wokey.ai/v1. deepseek-v4.1-flash supports both formats, but the client still has to send the shape for the selected protocol.
  • The app will not start or reports a YAML line number: check that input is nested under the intended model, every model dash is aligned, and the file contains no tabs. Restore a backup, then save it again with spaces only.
  • The app starts with “Select a model”: check that agent-default-model still points to a provider and model that exist. Update it after deleting or renaming a provider.
  • The model appears after discovery but has no image capability: Fetch available models mainly fills IDs and capacity fields. Explicitly declare input: [text, image] for each custom vision model instead of marking every model as vision-capable.
  • Other providers disappeared after saving: a cordis.patch.yml override replaces the whole llm-pi-ai entry, so keep all existing providers under providers.

Verify with curllink

If the client reports an error, rule out the key and base URL with curl first.

DeepSeek Harness uses the OpenAI Chat Completions format by default. A 200 from this request means the key and base URL are right. Replace YOUR_API_KEY with your key before sending it.

cURL
curl https://api.wokey.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [
      { "role": "user", "content": "Hello" }
    ]
  }'

Errors & Troubleshootinglink

Separate auth, balance, rate limit, model availability, and upstream timeout cases first.

401

invalid api key

The key is missing, mistyped, deleted, or Authorization / x-api-key headers conflict.

402

insufficient balance

The account balance is too low. Top up before sending more requests.

403

model_denylisted / account_restricted

Calls to the model, or to every model on the account, are paused after repeated violations. See Violation Handling Fees & Restrictions.

403

request_blocked

This request was blocked before reaching the upstream and is not charged, for example an unchanged resend of a request the model just refused, or a paused end user (X-End-User-Id). The error message says what is blocked; change the request as it says or retry later. Other requests are not affected.

429

rate limited

Traffic is too frequent. Retry later or reduce concurrency. If only one model, or one end user (X-End-User-Id), keeps returning 429, it may be a temporary limit after violations.

499

client disconnected

The client closed the connection before the response finished (code downstream_aborted). This is free by default. Once an account has at least 50 client disconnects in the past 24 hours and they make up 10% or more of its requests, later disconnected requests are billed for the usage the upstream reported: the processed input, including cache reads and writes, and output only when the upstream counted it. A disconnect before the upstream reported any usage stays free. The account is notified when billing starts, and billing stops automatically within an hour once the disconnect rate is back to normal. The usual cause is a client or proxy timeout that is too short, or a program that cancels requests before they finish.

502

upstream unavailable

The upstream model service is temporarily unavailable. Switch models or retry later.

504

upstream timeout

The upstream response timed out. Shorten context, reduce max_tokens, or retry.

529

upstream overloaded

The upstream model is temporarily overloaded and Wokey already retried on other routes (code upstream_overloaded). It is unrelated to your balance. Retry shortly or switch models.

Frequently asked questionslink

Should the DeepSeek Harness baseURL end in /v1?
It depends on the provider's api field. With anthropic-messages use https://api.wokey.ai with no /v1; OpenAI Chat Completions needs a separate provider with https://api.wokey.ai/v1.
Why does it say the current model does not support images?
That is a local capability check in the Harness: custom models declare text input only by default. Add input: [text, image] to the model entry, save, and try again in a new session.
Why did my other providers disappear after saving?
The llm-pi-ai override in cordis.patch.yml replaces the whole entry. Write the providers you already had into providers alongside Wokey.