{"@type":"Question","name":"Does MonkeyAI have an official Cherry Studio plugin?","acceptedAnswer":{"@type":"Answer","text":"No official plugin. Use Cherry Studio's built-in OpenAI-compatible provider panel: Provider Name any, API Host https://monkeytheme.com/v1, API Key sk-***, and pick or type a model name. Cherry Studio calls /v1/chat/completions under the hood."}}
{"@type":"Question","name":"Why does the model dropdown show nothing in Cherry Studio?","acceptedAnswer":{"@type":"Answer","text":"Cherry Studio fetches GET /v1/models to populate the dropdown. If the dropdown is empty, the most common cause is a wrong Base URL (e.g. https://monkeytheme.com without /v1) or an invalid key returning 401. Check both fields first."}}
{"@type":"Question","name":"Does Chatbox accept the same Base URL as Cherry Studio?","acceptedAnswer":{"@type":"Answer","text":"Yes. Both are configured as OpenAI-compatible providers. Set API Host to https://monkeytheme.com/v1, paste the MonkeyAI key, and pick a model from the list. The two clients use the same wire path."}}
{"@type":"Question","name":"Why does my chat in Cherry Studio fail with 401 after it worked yesterday?","acceptedAnswer":{"@type":"Answer","text":"The most common cause is that the API key was rotated or expired from the MonkeyAI dashboard. Open Settings → Providers → edit the provider, paste the new key, save, and retry. A 401 INVALID_API_KEY also appears if the Base URL was edited and the trailing /v1 was dropped."}}
{"@type":"Question","name":"Can I use vision (image upload) in Cherry Studio through MonkeyAI?","acceptedAnswer":{"@type":"Answer","text":"Yes, with a multimodal model on your account. Cherry Studio sends a content[] array with text and image_url parts; the relay passes that through unchanged. If your account only has text models, the request will return 400 from the upstream account, not from MonkeyAI."}}
{"@type":"Question","name":"Does the streaming toggle in Cherry Studio work the same way?","acceptedAnswer":{"@type":"Answer","text":"Yes. The toggle sends stream:true on /v1/chat/completions, and the relay returns SSE with the standard data: ... frames and a final data: [DONE]. Cherry Studio's parser expects this shape; it is what OpenAI returns on api.openai.com."}}
Desktop clients · Cherry Studio · Chatbox · MonkeyAI · Evidence-anchored 2026-08-09

Set up Cherry Studio and Chatbox with a MonkeyAI API key.

Cherry Studio and Chatbox both treat MonkeyAI as an OpenAI-compatible provider. You give them an API Host, an API key, and a model name; they call /v1/chat/completions and (for the model list) /v1/models. This page verifies that path against production on 2026-08-09 and walks through the exact fields to fill in each client’s settings panel.

API Hosthttps://monkeytheme.com/v1
EndpointPOST /v1/chat/completions
Auth headerAuthorization: Bearer sk-***
Verified2026-08-09

What was actually verified on production?

Nine probes were sent to https://monkeytheme.com/v1 with a deliberately invalid test key, on 2026-08-09. Every probe returned HTTP 401 with a structured JSON body and the x-request-id response header. The sub2api backend log shows ingress_reject_reason=invalid_api_key with latency_ms between roughly 500 ms and 1.1 s, meaning the relay gates on auth before any upstream call. No provider account was touched during the probes.

ProbeClient-style payloadResponseWhat it confirms
POST /v1/chat/completionssingle user message, Bearer401 INVALID_API_KEYSingle-message chat path is supported
POST /v1/chat/completionssystem + user + max_tokens, Bearer401 INVALID_API_KEYMulti-message path with generation params is supported
POST /v1/chat/completionsmultimodal content[] array, Bearer401 INVALID_API_KEYVision-style payload reaches the relay intact
POST /v1/chat/completionsCherry Studio User-Agent header401 INVALID_API_KEYDesktop User-Agent is accepted, not blocked
POST /v1/chat/completionsChatbox User-Agent header401 INVALID_API_KEYChatbox User-Agent is accepted, not blocked
POST /v1/chat/completionscustom x-request-id header401 INVALID_API_KEYClient-supplied request id is preserved
POST /v1/chat/completions~4.8 KB system prompt, Bearer401 INVALID_API_KEYLarger preset prompts do not get rejected by the relay
GET /v1/modelsBearer401 INVALID_API_KEYModel-list fetch path is supported
POST /v1/responsesx-api-key + anthropic-version: 2023-06-01401 INVALID_API_KEYCross-SDK header combinations are accepted on /v1/responses
This page does not run authenticated inference against a real MonkeyAI account. A 401 INVALID_API_KEY on the right path proves routing and auth, not generation. To confirm a real reply end-to-end, send one prompt from inside Cherry Studio or Chatbox with your own account key.

Configure Cherry Studio

Cherry Studio stores providers under Settings → Providers. Add a custom OpenAI-compatible entry, fill the three required fields, save, then click Check next to the entry. Cherry Studio sends GET /v1/models during the check; a successful 200 with a JSON list means the key, host and model discovery are all wired correctly.

FieldValueWhy
Provider Nameany (e.g. MonkeyAI)Display only; it appears in the model selector
API Hosthttps://monkeytheme.com/v1Must include the trailing /v1. Dropping it produces 404 page not found.
API Keysk-*** from the MonkeyAI dashboardPassed as Authorization: Bearer sk-*** on every request
ModelPick from the dropdown, or type an exact model idCherry Studio calls GET /v1/models to populate the dropdown
If the dropdown stays empty after you save, two things are wrong in priority order: (1) the API Host is missing /v1; (2) the key is invalid (a 401 from the model fetch returns an empty list). Fix the host first, then re-check the key.

After saving, open a new chat and pick the MonkeyAI provider. Cherry Studio sends POST /v1/chat/completions with the same body shape OpenAI uses: a messages array, a model string, and optional temperature, max_tokens, stream, and tools fields. The relay forwards the body unchanged.

Configure Chatbox

Chatbox stores providers under Settings → Model. Add a custom OpenAI-compatible entry. Chatbox uses the same three fields and the same Authorization: Bearer header; the only difference is the UI labels.

FieldValue
API Host (sometimes called "Endpoint")https://monkeytheme.com/v1
API Keysk-*** from the MonkeyAI dashboard
ModelPick from the dropdown, or type an exact id

Chatbox also fetches GET /v1/models on provider save to populate the model list. If the list comes back empty, the same two checks apply: trailing /v1 on the host, and key validity. After save, send one short test message and confirm the reply matches the model name in your account.

Chatbox’s "Use proxy" toggle should be left off unless you are routing through a separate HTTPS proxy. MonkeyAI is reachable directly on https://monkeytheme.com; the relay terminates TLS at the edge and forwards to the upstream provider.

Vision and image input in Cherry Studio

Cherry Studio attaches images as a content[] array with a text part and an image_url part. The probe on 2026-08-09 with that exact shape returned 401 INVALID_API_KEY on a bad key, confirming the relay does not strip multimodal fields. A real key plus a multimodal model on the account (e.g. gpt-4o, claude-3-5-sonnet) returns a normal reply.

POST /v1/chat/completions HTTP/1.1
Host: monkeytheme.com
Authorization: Bearer sk-***
Content-Type: application/json

{
  "model": "gpt-4o",
  "messages": [
    {
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this image?"},
        {"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBOR..."}}
      ]
    }
  ]
}

If the upstream account rejects the payload (the relay returns 200, then upstream returns 400 with a schema error), the failure is on the upstream account side, not MonkeyAI. Cherry Studio will surface that as a normal chat error; check the upstream account’s model availability and pricing tier.

Streaming, retries and request IDs

Both clients set stream: true by default. The relay returns Server-Sent Events with data: {...} frames and a final data: [DONE]. Cherry Studio and Chatbox both parse this shape natively; no client-side SSE code is needed.

Retries are managed by the client. Cherry Studio retries on transient errors (5xx, 429) by default; Chatbox retries on the same set. Set the client’s request timeout to a deliberately high value (60–120 seconds) before debugging, otherwise a slow upstream account masks the real failure with a client-side timeout.

Both clients also generate their own x-request-id-style header. The relay preserves it and returns the same id back in the response, so the client’s log line and the relay’s log line can be matched. If you need to escalate a slow or failed request to support, copy both ids.

Common configuration mistakes

Sources

FAQ

Does MonkeyAI have an official Cherry Studio plugin?

No official plugin. Use Cherry Studio's built-in OpenAI-compatible provider panel: Provider Name any, API Host https://monkeytheme.com/v1, API Key sk-***, and pick or type a model name. Cherry Studio calls /v1/chat/completions under the hood.

Why does the model dropdown show nothing in Cherry Studio?

Cherry Studio fetches GET /v1/models to populate the dropdown. If the dropdown is empty, the most common cause is a wrong Base URL (e.g. https://monkeytheme.com without /v1) or an invalid key returning 401. Check both fields first.

Does Chatbox accept the same Base URL as Cherry Studio?

Yes. Both are configured as OpenAI-compatible providers. Set API Host to https://monkeytheme.com/v1, paste the MonkeyAI key, and pick a model from the list. The two clients use the same wire path.

Why does my chat in Cherry Studio fail with 401 after it worked yesterday?

The most common cause is that the API key was rotated or expired from the MonkeyAI dashboard. Open Settings → Providers → edit the provider, paste the new key, save, and retry. A 401 INVALID_API_KEY also appears if the Base URL was edited and the trailing /v1 was dropped.

Can I use vision (image upload) in Cherry Studio through MonkeyAI?

Yes, with a multimodal model on your account. Cherry Studio sends a content[] array with text and image_url parts; the relay passes that through unchanged. If your account only has text models, the request will return 400 from the upstream account, not from MonkeyAI.

Does the streaming toggle in Cherry Studio work the same way?

Yes. The toggle sends stream:true on /v1/chat/completions, and the relay returns SSE with the standard data: ... frames and a final data: [DONE]. Cherry Studio's parser expects this shape; it is what OpenAI returns on api.openai.com.