clojure-llm-sdk ships 37 registered provider profiles across chat, embeddings, moderation, rerank, image generation, transcription, and text-to-speech.
Provider profiles define:
| Provider | ID | Protocol | Auth |
|---|---|---|---|
| OpenAI | :openai | openai-chat | OPENAI_API_KEY |
| OpenRouter | :openrouter | openrouter | OPENROUTER_API_KEY |
| Anthropic Messages | :anthropic | anthropic-messages | ANTHROPIC_API_KEY |
| Anthropic OAuth | :anthropic | anthropic-messages | CLAUDE_OAT_TOKEN |
| Gemini Native | :gemini-native | gemini-native | GEMINI_API_KEY |
| Vertex Gemini | :vertex-gemini | gemini-native | ADC / GOOGLE_OAUTH_ACCESS_TOKEN |
| Vertex Anthropic (Claude) | :vertex-anthropic | anthropic-messages | ADC / GOOGLE_OAUTH_ACCESS_TOKEN |
| OpenAI Codex | :codex | codex | OPENAI_API_KEY |
| Codex Backend | :codex-backend | codex | ~/.codex/auth.json |
| DeepSeek | :deepseek | openai-chat | DEEPSEEK_API_KEY |
| Kimi / Moonshot | :kimi | openai-chat | MOONSHOT_API_KEY |
| Kimi Code | :kimi-code | openai-chat | KIMI_API_KEY |
| Mistral | :mistral | openai-chat | MISTRAL_API_KEY |
| Groq | :groq | openai-chat | GROQ_API_KEY |
| Cerebras | :cerebras | openai-chat | CEREBRAS_API_KEY |
| Together | :together | openai-chat | TOGETHER_API_KEY |
| xAI | :xai | openai-chat | XAI_API_KEY |
| HuggingFace Router | :huggingface | openai-chat | HF_TOKEN |
| Perplexity | :perplexity | perplexity-chat | PERPLEXITY_API_KEY |
| AWS Bedrock | :bedrock | bedrock | AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY |
| Ollama Native | :ollama-native | ollama-native | none |
| Fake/Test | :fake | fake | none |
OpenAI-compatible aggregator aliases:
| Provider | ID | Auth |
|---|---|---|
| SambaNova | :sambanova | SAMBANOVA_API_KEY |
| DeepInfra | :deepinfra | DEEPINFRA_API_KEY |
| Lambda AI | :lambda | LAMBDA_API_KEY |
| Nebius | :nebius | NEBIUS_API_KEY |
| Hyperbolic | :hyperbolic | HYPERBOLIC_API_KEY |
| Novita | :novita | NOVITA_API_KEY |
| FriendliAI | :friendliai | FRIENDLI_TOKEN |
| Featherless | :featherless | FEATHERLESS_API_KEY |
| Cloudflare Workers AI | :cloudflare | CLOUDFLARE_API_TOKEN |
| DashScope | :dashscope | DASHSCOPE_API_KEY |
| Volcengine ARK | :volcengine | ARK_API_KEY |
clojure-llm-sdk is not a proxy router. Aggregator aliases use one credential each and do not perform pool management, spend routing, cooldowns, or tenant isolation.
Provider implementation namespaces are split by provider family. For example, OpenAI chat is owned by llm.sdk.providers.openai.chat, Anthropic chat by llm.sdk.providers.anthropic.chat, OpenRouter by llm.sdk.providers.openrouter.chat, and Bedrock Converse by llm.sdk.providers.bedrock.converse. The older flat namespaces remain compatibility shims for existing callers.
| Provider | ID | Wire shape | Auth |
|---|---|---|---|
| OpenAI | :openai | /embeddings | OPENAI_API_KEY |
| Mistral | :mistral | /embeddings | MISTRAL_API_KEY |
| Together | :together | /embeddings | TOGETHER_API_KEY |
| Voyage | :voyage | /embeddings | VOYAGE_API_KEY |
| Jina | :jina | /embeddings | JINA_API_KEY |
| Cohere | :cohere | /embed | COHERE_API_KEY |
| Ollama Native | :ollama-native | /api/embed | none |
| Provider | ID | Auth |
|---|---|---|
| OpenAI | :openai | OPENAI_API_KEY |
| Provider | ID | Wire shape | Auth |
|---|---|---|---|
| Cohere | :cohere | /rerank | COHERE_API_KEY |
| Jina | :jina | /rerank | JINA_API_KEY |
| Voyage | :voyage | /rerank | VOYAGE_API_KEY |
| Provider | ID | Auth |
|---|---|---|
| OpenAI | :openai | OPENAI_API_KEY |
| Vertex Imagen | :vertex-imagen | ADC / GOOGLE_OAUTH_ACCESS_TOKEN |
| AWS Bedrock Image | :bedrock | AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY |
| Provider | ID | Auth |
|---|---|---|
| OpenAI Whisper | :openai | OPENAI_API_KEY |
| Groq Whisper | :groq | GROQ_API_KEY |
| Provider | ID | Auth |
|---|---|---|
| OpenAI TTS | :openai | OPENAI_API_KEY |
| ElevenLabs | :elevenlabs | ELEVENLABS_API_KEY |
The Anthropic adapter auto-detects OAuth-style tokens by token prefix and switches from x-api-key to Bearer auth. OAuth mode also adds Claude Code identity headers and preserves thinking block signatures for replay.
:vertex-anthropic serves Anthropic's Claude models through Google Vertex AI. It reuses the native Anthropic Messages request body, response parser, and streaming parser, so thinking blocks, tool use, and cache markers behave exactly as on :anthropic. Only the transport differs:
POST {location}-aiplatform.googleapis.com/v1/projects/{project}/locations/{location}/publishers/anthropic/models/{model}:rawPredict for unary calls and :streamRawPredict for streaming.:vertex-gemini, in place of the x-api-key header.anthropic_version: "vertex-2023-10-16" and adds stream: true on streaming calls.Pass the project and location through :request/provider-options under :vertex, or set GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION. Model ids are the Vertex Claude ids, for example claude-opus-4-6, claude-sonnet-4-6, and claude-haiku-4-5. See provider-configuration.md for credentials, model availability, and a worked example.
:kimi and :kimi-code are intentionally separate:
:kimi targets Moonshot's public API at https://api.moonshot.cn/v1 and reads MOONSHOT_API_KEY.:kimi-code targets https://api.kimi.com/coding/v1, reads KIMI_API_KEY, uses the kimi-for-coding model, and sends KimiCLI-style non-secret identity headers.Perplexity citations and search results are normalized into :part/type :citation parts. Citation tokens and search query counts surface in :response/usage when the provider reports them.
OpenRouter supports provider routing options through :request/provider-options, including extra_body.provider, extra_body.plugins, and reasoning configuration.
Azure routes by deployment name in the URL. Register one provider id per deployment with llm.sdk.providers.openai.chat/register-azure-deployment!. The legacy llm.sdk.providers.openai-chat namespace forwards to the same implementation. See provider-configuration.md.
Register private OpenAI-compatible endpoints with register-alias!. See provider-configuration.md.
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |