Unrefused

Integrations

Use Unrefused from the tools you already run.

Any client that speaks the OpenAI API can use Unrefused. Most tools only need two environment variables, or an OpenAI-compatible provider entry in their settings.

shell
export OPENAI_BASE_URL=https://api.unrefused.com/v1
export OPENAI_API_KEY=unr_live_…

Model ids are unrefused-glm-5.3-flash for chat and embed-base for embeddings.

OpenCode

Add Unrefused as an OpenAI-compatible provider in OpenCode's configuration with the base URL above and your key, then select unrefused-glm-5.3-flash (or another model id) as the model. The exact configuration keys depend on your OpenCode version; look for the provider section of its settings.

Codex

Codex reads OPENAI_BASE_URL and OPENAI_API_KEY from the environment. Export both as shown above and pass an Unrefused model id with the model flag or in its config file. Tool calls and streaming work as they do against OpenAI.

Claude Code

Claude Code talks the Anthropic Messages API rather than the OpenAI format, so it cannot point at https://api.unrefused.com/v1 directly today. An Anthropic-compatible endpoint is on our roadmap. In the meantime, call Unrefused from Claude Code the way you would any HTTP API: from a script it runs, or through an MCP tool you give it.

curl

shell
curl https://api.unrefused.com/v1/chat/completions \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "X-Unrefused-Policy: strict-pii" \
  -H "Content-Type: application/json" \
  -d '{"model":"unrefused-glm-5.3-flash","stream":true,"messages":[{"role":"user","content":"Hello"}]}'

SDKs and frameworks

The official OpenAI SDKs for Python, TypeScript, Go, Java and .NET all accept a base URL. LangChain, LlamaIndex, Vercel AI SDK, LiteLLM and most eval harnesses expose the same option. Set the base URL and key and keep the rest of your code. Building agents? Give them real reach with tool calling and MCP servers.

Spot an error or a gap? Tell us — and quote x-request-id if you have one.