# `TypeSafeAPISDK`
[🔗](https://github.com/nshkrdotcom/typesafe_api_sdk/blob/v0.1.0/lib/typesafe_api_sdk.ex#L1)

Minimal Elixir client for the TypeSafe System One API.

This package intentionally owns only the provider-specific HTTP/wire surface.
Higher-level System One semantics, evaluation workflows, and local inference
belong in `system_one_sdk` and the self-hosted runtime packages.

# `choice`

Build a wire-oriented Choice question struct.

# `list_models`

```elixir
@spec list_models(TypeSafeAPISDK.Client.t(), keyword()) ::
  {:ok, TypeSafeAPISDK.ListModelsResponse.t()} | {:error, term()}
```

# `list_models!`

List models and raise a normalized SDK error on failure.

# `new_client`

```elixir
@spec new_client(keyword()) :: TypeSafeAPISDK.Client.t()
```

# `noul`

Build a wire-oriented Noul question struct.

# `score`

Build a wire-oriented Score question struct.

# `system_one`

```elixir
@spec system_one(TypeSafeAPISDK.Client.t(), term(), map(), keyword()) ::
  {:ok, TypeSafeAPISDK.SystemOneResponse.t()} | {:error, term()}
```

# `system_one!`

Run a System One request and raise a normalized SDK error on failure.

# `version`

```elixir
@spec version() :: String.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
