Skip to content
Payment & usageServer prompts and discounts

Server prompts and discounts

Independent settings for four families, application conditions and the 25% discount.

Keys no longer have Standard or Prompt modes. A server prompt is configured independently for Claude, Kimi, Composer and Grok. The model field selects the model; the key and USD balance remain shared.

If any condition is missing, the request proceeds without a server prompt. For Claude, the discount depends on actual application in that request, not the setting label.

When the 25% discount applies

Request conditionTokens and cacheDiscount
Claude, no server prompt appliedBase cost × 0.7525%
Claude, server prompt applied, without PRIVATEBase costNone
Kimi, Composer or Grok, without PRIVATEBase costNone
Confirmed current PRIVATE membership, any familyBase cost × 0.7525%, regardless of server prompt application

Which capabilities depend on the server prompt

  • Check the selected surface: Messages, Chat Completions or Responses. A shared address does not mean identical parameters.
  • Claude has specific thinking, media and citation behavior when a server prompt is applied; the detailed matrix is on the Messages page.
  • Fable 5 and 5.1 work without an applied server prompt. If a prompt would actually apply, a Fable request is rejected before billing. If no suitable prompt is available, Fable works without it.

Model refusals and errors

An ordinary model refusal is returned in the response. Guard does not stop replies with a local refusal or repeated-text detector. Request limits and error handling still apply.

A structured Claude cybersecurity refusal returns the cyber_refusal code:

The account and Usage API show request history, actual server-prompt application and the discount percentage.

Rich tool_result with a server prompt

Claude returns tool_use, the client executes the function, and the client sends the result as tool_result. Guard carries that exchange but does not execute the tool on its own server.

tool_result contentHandling
String or textPassed to the model as text
imageBase64 is supported; a URL is not fetched for a regular key, so download a remote image and send it as base64
documentText sources and base64 PDFs are passed to the model as documents; shared server-prompt media and size limits apply
search_resultPassed as a client search result and cannot be mixed with other result types in one result
tool_referencePassed as a reference to a client-side tool
is_error: truePassed to the model as a tool-execution error
json
{
  "role": "user",
  "content": [{
    "type": "tool_result",
    "tool_use_id": "toolu_…",
    "content": [
      {"type": "text", "text": "Check completed"},
      {
        "type": "image",
        "source": {
          "type": "base64",
          "media_type": "image/png",
          "data": "…"
        }
      }
    ]
  }]
}

Client and SDK setup

Choose the existing guide for your client. Installation steps are not duplicated here.

Claude CodeAnthropic's terminal clientVS CodeClaude Code extensionClineProvider setup in ClineRoo CodeProvider setup in Roo CodeCodexConnect the Codex CLIOpenCodeConnect OpenCodePython SDKExamples for anthropic and openaiNode / TypeScriptExamples for both SDKsn8nConnect automationsMigrate from OpenAIMove an OpenAI SDK client to Guard

How the discount is calculated

Token cost is calculated at the requested model’s published rate, including cache writes and reads. When eligible, that cost is multiplied by 0.75. Fixed server-tool fees are added afterwards.

  • PRIVATE gives 25% off all four families on all present and future keys of a user while their current membership is confirmed.
  • Confirmed departure from PRIVATE ends the discount. A lifetime right to return is not current membership.
  • If a membership check is temporarily unavailable, the last confirmed state is retained. PRIVATE eligibility does not apply before the first confirmation.
  • The new rules do not recalculate historical financial records.

What changes when you update the setting

SettingWhat happens
Key, address and balanceStay the same
FamilyClaude, Kimi, Composer and Grok have independent options and entitlements
Request already startedRetains its initial prompt application and price
Next requestUses the current entitlement and option
Entitlement expiryThe chosen option is retained; application stops and resumes after renewal

Where to check the setting

  1. Open @subscribe_ai_bot → My API keys and choose the key.
  2. Open key management and the intended family: Claude, Kimi, Composer or Grok.
  3. Check the server-prompt entitlement, its expiry and the selected option.
  4. After changing the setting, send a new request and check actual application in its history.

How to check application and spend

  • The key card shows the option and entitlement for the intended family.
  • The account shows actual application and the discount for each request.
  • In Usage API, use family and endpoint; request records include server_prompt_applied and discount_percent. The removed mode filter returns 410 product_modes_removed.

When a new session is needed

  • Server-prompt settings affect subsequent requests. An already started stream retains its original conditions.
  • Start a new agent session after changing its server-prompt binding.
  • Choose the exact model in your client; a server-prompt entitlement does not choose the family for you.

If the server prompt was not applied

  • Reopen the key card if you are viewing an old bot message.
  • Check the key, family, entitlement expiry and enabled option.
  • Check a new request: a setting change does not affect a stream already in progress.
  • If the entitlement is active and the option is enabled but no prompt was applied, ask support whether a suitable prompt is available. Do not send your full API key.

Documentation sections

On this page