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 keykeyUse 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
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
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
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
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
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.
# 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 webAPI formats and base URLslink
When one client switches API format, whether the base URL ends in /v1 can change.
| Format | Base URL | Use it for |
|---|---|---|
| OpenAI Chat Completions | https://api.wokey.ai/v1 | DeepSeek, GLM, Kimi, and other models |
| Anthropic Messages | https://api.wokey.ai | Claude 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 detailsCommon 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 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.
invalid api key
The key is missing, mistyped, deleted, or Authorization / x-api-key headers conflict.
insufficient balance
The account balance is too low. Top up before sending more requests.
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.
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.
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.
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.
upstream unavailable
The upstream model service is temporarily unavailable. Switch models or retry later.
upstream timeout
The upstream response timed out. Shorten context, reduce max_tokens, or retry.
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.