defmodule OpenrouterSdk do
@moduledoc """
thin facade for the most common operations.
full module list:
* `OpenrouterSdk.Api.Chat` — `/chat/completions`
* `OpenrouterSdk.Api.Messages` — `/messages` (anthropic format)
* `OpenrouterSdk.Api.Embeddings` — `/embeddings`
* `OpenrouterSdk.Api.Speech` — `/audio/speech`
* `OpenrouterSdk.Api.Transcription` — `/audio/transcriptions`
* `OpenrouterSdk.Api.Models` — live `/models`
* `OpenrouterSdk.Catalog.Models` — embedded snapshot
* `OpenrouterSdk.Catalog.Providers` — embedded snapshot
* `OpenrouterSdk.OAuth` — pkce primitives
* `OpenrouterSdk.Middleware` — extension behaviour
* `OpenrouterSdk.Config`, `OpenrouterSdk.Error`
the package ships zero retry / rotation policy on purpose. compose
your own via the `Middleware` behaviour.
"""
alias OpenrouterSdk.Api
defdelegate chat(payload, opts \\ []), to: Api.Chat, as: :completions
defdelegate chat_stream(payload, opts \\ []), to: Api.Chat, as: :completions_stream
defdelegate messages(payload, opts \\ []), to: Api.Messages, as: :create
defdelegate messages_stream(payload, opts \\ []), to: Api.Messages, as: :create_stream
defdelegate embeddings(payload, opts \\ []), to: Api.Embeddings, as: :create
defdelegate speech(payload, opts \\ []), to: Api.Speech, as: :create
defdelegate transcription(payload, opts \\ []), to: Api.Transcription, as: :create
defdelegate models(opts \\ []), to: Api.Models, as: :list
end