Client Configuration

Copy Markdown View Source

TypeSafeAPISDK.Client owns TypeSafe-specific client configuration while Pristine owns HTTP execution.

client = TypeSafeAPISDK.new_client(
  api_key: "...",
  base_url: "https://api.typesafe.ai",
  model: "jev-latest",
  timeout_ms: 10_000,
  retry: [max_retries: 2],
  headers: %{"X-Application" => "my-app"}
)

Explicit client options override application config. The top-level project runtime config maps TYPESAFE_API_KEY, TYPESAFE_BASE_URL, TYPESAFE_DEFAULT_MODEL, and TYPESAFE_LOG_LEVEL.

base_url must be HTTP(S), include a host, and contain no URL credentials, query, or fragment. Deployment path prefixes are preserved.

Authorization, content negotiation, SDK identity, and retry-count headers are owned by the SDK/Pristine path and cannot be replaced through headers: or per-call extra_headers:.

Live alternate-deployment verification

The client accepts any credential-free HTTP(S) API root implementing the TypeSafe /v1/models and /v1/systemone contract. To prove a particular deployment, use its own dedicated live variables rather than reusing the official key implicitly:

export TYPESAFE_LIVE_ALT_BASE_URL='https://provider.example/deployment/root'
export TYPESAFE_LIVE_ALT_API_KEY='credential-issued-for-that-root'
export TYPESAFE_LIVE_ALT_MODEL='provider-model-id' # optional
bash scripts/live_qc.sh alternate

The alternate live test calls both operations. If the base URL contains a path prefix, successful calls prove that the generated operation paths were joined to that prefix correctly.