Short answer

An uncensored AI API is a hosted endpoint that serves a refusal-reduced model, usually through the OpenAI chat-completions format, so existing SDKs work by changing the base URL. Some providers name the exact Hugging Face repo they serve; others serve their own build and do not say which weights it uses; general routers mostly serve the standard models. Self-hosting gives you the same API shape with weights you choose.

Disclosure. Uncensored AI Atlas has a commercial relationship with MolochAI. We may benefit when you sign up or buy credit through our links. MolochAI appears here with the same data standards as every other provider, and its rows are labelled. How we handle this.

Three kinds of hosted offering

13 offerings

Names the exact Hugging Face repo

You can read the card of the exact weights, check their license and test the same file locally. Featherless works this way for its whole catalogue; Venice links a source for each model, often a Hugging Face repo.

5 offerings

Own refusal-reduced build, weights not named

The provider says the model is refusal-reduced but not which weights it runs. You are relying on its description. MolochAI, our partner, works this way for its five models.

12 offerings

Standard model, not refusal-reduced

The developer's standard instruct model, usually much cheaper and widely hosted. Listed so you can see the price gap; it is not a substitute for a refusal-reduced variant.

Self-hosting is the fourth route. llama.cpp's server, vLLM and Ollama all expose OpenAI-compatible endpoints, so the code below runs against your own machine with a different base URL. See local vs hosted for the tradeoffs and the VRAM estimator for hardware.

OpenAI compatibility, as each provider documents it

FeatureFeatherlessMolochAIPartnerOpenRouterVenice
OpenAI-style chat completionsYesWorks with OpenAI SDKs by changing the base URL.YesPOST /chat/completions, plain and streaming.YesThe OpenAI SDK can be pointed at OpenRouter.YesThe docs describe the API as OpenAI-compatible.
Public model listYesPublic GET /v1/models with prices and context per model.YesGET /models.YesPublic GET /api/v1/models with prices and supported parameters.YesPublic model list with prices, limits and capabilities.
Streaming (SSE)YesDocumented in the API docs.YesUsage is always included in the final chunk.YesYesstream=true is documented.
Tool / function callingPer modelFlagged per model (tool_use) in the model list.YesQuality can vary by server. While streaming, tool arguments arrive whole.Per modelListed per model in supported_parameters.Per modelFlagged per model (supportsFunctionCalling).
JSON mode / response_formatNot documentedIgnoredresponse_format is ignored: ask for JSON in the prompt and validate it.Per modelListed per model (response_format, structured_outputs).Per modelFlagged per model (supportsResponseSchema).
Image inputPer modelFlagged per model (image_input) in the model list.Per modelImage parts are forwarded and work only on servers with vision enabled.Per modelDepends on the model.Per modelFlagged per model (supportsVision).
From each provider's documentation on 14 November 2026. Atlas had no test keys and sent no requests, so none of this is independently verified, and reliability is not measured.

The same request against any of them

Set three environment variables and the code does not change between providers. Never put a key in source code.

curl "$LLM_BASE_URL/chat/completions" \
  -H "Authorization: Bearer $LLM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "'"$LLM_MODEL"'",
    "messages": [
      {"role": "system", "content": "You are a concise assistant for developers."},
      {"role": "user", "content": "Explain what a race condition is in two sentences."}
    ],
    "max_tokens": 300
  }'
ProviderLLM_BASE_URLExample LLM_MODEL
MolochAIhttps://api.molochai.dev/api/v1qwen3.8-27b-uncensored
Featherlesshttps://api.featherless.ai/v1huihui-ai/Huihui-Qwen3.8-27B-abliterated
Venicehttps://api.venice.ai/api/v1venice-uncensored-1-2
OpenRouterhttps://openrouter.ai/api/v1qwen/qwen3.8-27b
llama.cpp server (local, default port 9931)http://localhost:9931/v1the name you set with --alias

Base URLs are from each provider's documentation. The samples were run against a local mock server, not against these providers. Full walkthroughs: Python, Node.js, streaming.

Where to go next