Install
openclaw skills install which-llmDeterministic decision-ranking API with HTTP 402 payments and outcome credits.
openclaw skills install which-llmUse this skill when you need a deterministic recommendation for which LLM to use under explicit constraints such as cost and quality.
This skill is for calling the Which‑LLM API. It does not run an LLM itself. For paid requests, the AI bot needs access to a crypto wallet.
https://api.which-llm.comPOST /decision/optimizePOST /decision/outcomeGET /capabilities, GET /pricing, GET /statusUSDCPrimary credential: WALLET_CREDENTIALSInstall mechanism: instruction-onlyWrites to disk on install: falseDownloads code on install: falseBefore using this skill, have the following ready:
https://api.which-llm.comPOST /decision/optimize to get a recommended model and fallback planPOST /decision/outcome to report real execution resultsalways_on: false: the skill is not force-installed and does not run continuouslydisable_model_invocation: false: an agent may invoke it on demandPaid calls may use HTTP 402 Payment Required.
High-level flow:
POST /decision/optimize402, inspect fields such as required_amount, accepts, and payment_referenceThis skill documents the API behavior and payment-related response handling. The wallet requirement is limited to paid requests.
GET /capabilitiesUse this to discover supported constraints, decision types, and payment behavior.
GET /pricingUse this to check current pricing and supported chains before making a paid request.
GET /statusUse this for service-health checks.
POST /decision/optimizeThis is the main endpoint. Send the goal and constraints, then receive:
recommended_modelfallback_planTypical request shape:
{
"goal": "Summarize customer feedback emails into a 5-bullet executive summary",
"constraints": {
"min_quality_score": 0.8,
"max_cost_usd": 0.01
},
"workload": {
"input_tokens": 1200,
"output_tokens": 300,
"requests": 1
},
"task_type": "summarize"
}
If payment is required, the API may first return 402 with fields such as:
required_amountcurrencyaccepts[].chainaccepts[].pay_topayment_referenceRetry the request after external payment handling with:
X-Payment-ChainX-Payment-TxX-PayerX-Payment-AmountX-Payment-AssetIf you have a valid credit token, also send:
X-Credit-TokenPOST /decision/outcomeUse this after running the recommended model. Report what actually happened so the system can issue a credit token for future use.
Typical request shape:
{
"decision_id": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
"option_used": "openai/gpt-4o-mini",
"actual_cost": 0.008,
"actual_latency": 650,
"quality_score": 0.86,
"success": true
}
Typical response includes:
statusdecision_idoutcome_hashrefund_credit.credit_tokenGET /capabilities or GET /pricing first if you need to discover current payment behaviorPOST /decision/optimize only when you actually need model selection helpPOST /decision/outcome to earn creditsPAYMENT_REQUIREDThe endpoint needs payment first. Read the 402 response, satisfy the payment requirement externally, then retry with payment proof headers if available.
PAYMENT_INVALIDCheck:
NO_FEASIBLE_OPTIONSYour cost and quality constraints are too strict for the available models. Relax the budget or quality threshold and retry.
RATE_LIMIT_EXCEEDEDBack off and retry later. Use an idempotency key for safe retries.