# llm.buzz docs > How to call the llm.buzz model API. Each page links to its Markdown. ## Get started - [Quickstart](https://llm.buzz/docs/raw/quickstart.md): Call any model on llm.buzz with the OpenAI or Anthropic SDK you already use. - [Choosing an API](https://llm.buzz/docs/raw/choosing-an-api.md): llm.buzz serves each kind of model on the API made for it. A chat model answers Chat Completions, Responses and Messages alike; embeddings, image, audio and decision models have their own routes. - [Coming from OpenRouter](https://llm.buzz/docs/raw/from-openrouter.md): llm.buzz speaks OpenRouter's API, so most OpenRouter code works after you change the base URL and the key. This page lists what else differs, with links to the pages that explain more. ## APIs - [Chat Completions](https://llm.buzz/docs/raw/chat-completions.md): Chat Completions is OpenAI's conversation API, the one most SDKs and coding agents speak. llm.buzz serves it at POST /chat/completions under https://api.llm.buzz/api/v1 for every text model, with OpenRouter's extensions, so the OpenAI and OpenRouter SDKs call it with the base URL changed. - [Responses](https://llm.buzz/docs/raw/responses.md): Responses is OpenAI's API of items in and items out, with the conversation's state kept by llm.buzz, so a follow-up sends only its own input. llm.buzz serves it at POST https://api.llm.buzz/api/v1/responses for every text model, and the OpenAI SDK and Codex call it with the base URL changed. - [Messages](https://llm.buzz/docs/raw/messages.md): Messages is Anthropic's API. llm.buzz serves it at POST https://api.llm.buzz/api/v1/messages for every text model, Claude or not, so the Anthropic SDK and the tools built on it work with the base URL alone. - [Embeddings](https://llm.buzz/docs/raw/embeddings.md): llm.buzz serves embeddings models on the OpenAI Embeddings API, so the OpenAI and OpenRouter SDKs reach them with the base URL alone. Chat Completions, Responses and Messages refuse an embeddings model with a 400 on model that names POST /api/v1/embeddings. - [Images](https://llm.buzz/docs/raw/images.md): llm.buzz serves image generation models on OpenRouter's Image API, POST /api/v1/images, and on the OpenAI Images API, POST /api/v1/images/generations, so the OpenRouter and OpenAI SDKs reach them with the base URL alone. An answer is never streamed, and every image comes back as base64 in b64_json. - [Audio](https://llm.buzz/docs/raw/audio.md): llm.buzz serves speech to text and text to speech with OpenRouter's request and answer shapes, so the OpenAI and OpenRouter SDKs reach them with the base URL alone. Each audio model serves one of the two. Chat Completions, Responses and Messages refuse an audio model with a 400 that names its route. - [Decisions](https://llm.buzz/docs/raw/decisions.md): The decisions routes take a state and up to 32 typed questions about it, and answer each one in a fixed shape: a probability for noul, the chosen category and a probability per category for choice, and a position on your scale for score. No public model on llm.buzz answers them. ## Text generation - [Tools and structured output](https://llm.buzz/docs/raw/tools-and-structured-output.md): Tools let a model ask your code to run a function; structured output makes it answer in JSON that matches your schema. Both work on Chat Completions, Responses and Messages, each in its own shape. - [Streaming](https://llm.buzz/docs/raw/streaming.md): With stream: true the answer arrives as server-sent events while the model writes it. Chat Completions, Responses and Messages all stream, each with its own events. - [Reasoning](https://llm.buzz/docs/raw/reasoning.md): Reasoning models think before they answer. You set how much in the field your API uses, and llm.buzz sends it to each provider in that provider's terms, by OpenRouter's rules. - [Images in requests](https://llm.buzz/docs/raw/images-in-requests.md): Models that read images take them inside a message. This page covers images on Chat Completions and Messages, and a message can mix text and several images. - [Prompt caching](https://llm.buzz/docs/raw/prompt-caching.md): A provider that caches a prompt bills the repeated start of your next request at its cached-input price, a fraction of its input price. Most providers cache on their own. Claude caches only where your request marks it, and llm.buzz never adds a mark for you. ## How llm.buzz works - [Authentication](https://llm.buzz/docs/raw/authentication.md): Every request carries one of your keys. You create keys in the console, send them in the Authorization header, and can give each one a spending limit. - [Models and routing](https://llm.buzz/docs/raw/models-and-routing.md): Each model on llm.buzz is served by one or more providers. You name the model; llm.buzz picks a provider, moves to the next one when a provider fails, and follows your preferences when you give them. - [Pricing and discounts](https://llm.buzz/docs/raw/pricing.md): You pay per token, or per second of audio, per character or per image on a model priced that way, at the price of the provider that answered your request, from prepaid credit. Every price is public: on each model's page, in the model list, and in the market log. - [Usage and limits](https://llm.buzz/docs/raw/usage-and-limits.md): Every answer says what the request used and what it cost, and a few limits decide when a request is refused. This page lists both, and where to read them again afterwards. - [Retries and idempotency](https://llm.buzz/docs/raw/retries-and-idempotency.md): llm.buzz retries across a model's providers inside one request, and an Idempotency-Key makes your own retries safe. This page says what each does, and what a retry costs. - [Errors](https://llm.buzz/docs/raw/errors.md): Every error on the model API comes in one envelope: the HTTP status, a message that says what to do, and a code your program can branch on. ## API reference - [API reference](https://llm.buzz/docs/raw/api-reference.md): The llm.buzz model API speaks the OpenAI, Anthropic and OpenRouter request and response formats under https://api.llm.buzz/api/v1. This page covers what every route shares: the base URL, authentication, the provider object, request fields and errors. Each endpoint has its own page, with its fields and examples. ## Endpoints - [Chat Completions](https://llm.buzz/docs/api/chat-completions.md): `POST /api/v1/chat/completions` - [Responses WebSocket](https://llm.buzz/docs/api/responses-websocket.md): `GET /api/v1/responses` - [Responses](https://llm.buzz/docs/api/responses.md): `POST /api/v1/responses` - [Messages](https://llm.buzz/docs/api/messages.md): `POST /api/v1/messages` - [Count tokens](https://llm.buzz/docs/api/count-tokens.md): `POST /api/v1/messages/count_tokens` - [Embeddings](https://llm.buzz/docs/api/embeddings.md): `POST /api/v1/embeddings` - [Images](https://llm.buzz/docs/api/images.md): `POST /api/v1/images` - [Image generation](https://llm.buzz/docs/api/image-generations.md): `POST /api/v1/images/generations` - [Speech to text](https://llm.buzz/docs/api/audio-transcriptions.md): `POST /api/v1/audio/transcriptions` - [Text to speech](https://llm.buzz/docs/api/audio-speech.md): `POST /api/v1/audio/speech` - [Get a generation](https://llm.buzz/docs/api/get-generation.md): `GET /api/v1/generation` - [List models](https://llm.buzz/docs/api/list-models.md): `GET /api/v1/models` - [Get a model](https://llm.buzz/docs/api/get-model.md): `GET /api/v1/models/{author}/{slug}` - [List a model's endpoints](https://llm.buzz/docs/api/list-endpoints.md): `GET /api/v1/models/{author}/{slug}/endpoints` - [List embeddings models](https://llm.buzz/docs/api/embeddings-models.md): `GET /api/v1/embeddings/models` - [List image models](https://llm.buzz/docs/api/image-models.md): `GET /api/v1/images/models` - [List an image model's endpoints](https://llm.buzz/docs/api/image-model-endpoints.md): `GET /api/v1/images/models/{author}/{slug}/endpoints` - [Get the current key](https://llm.buzz/docs/api/get-key.md): `GET /api/v1/key` - [Get credits](https://llm.buzz/docs/api/get-credits.md): `GET /api/v1/credits` - [List keys](https://llm.buzz/docs/api/list-keys.md): `GET /api/v1/keys` - [Create a key](https://llm.buzz/docs/api/create-key.md): `POST /api/v1/keys` - [Get a key](https://llm.buzz/docs/api/get-key-by-hash.md): `GET /api/v1/keys/{hash}` - [Update a key](https://llm.buzz/docs/api/update-key.md): `PATCH /api/v1/keys/{hash}` - [Revoke a key](https://llm.buzz/docs/api/delete-key.md): `DELETE /api/v1/keys/{hash}` - [Site facts](https://llm.buzz/docs/api/public-site.md): `GET /public/v1/site` - [Public models](https://llm.buzz/docs/api/public-models.md): `GET /public/v1/models` - [Public model](https://llm.buzz/docs/api/public-model.md): `GET /public/v1/models/{author}/{slug}` - [Public providers](https://llm.buzz/docs/api/public-providers.md): `GET /public/v1/providers` - [OpenAPI document](https://llm.buzz/docs/api/openapi.json): every endpoint above, as OpenAPI 3.1