From 3353a5656d6675009dfbb2563c1cde641932243b Mon Sep 17 00:00:00 2001 From: Avi Fenesh <55081586+avifenesh@users.noreply.github.com> Date: Mon, 17 Aug 2026 12:40:12 +0300 Subject: [PATCH 1/2] feat: add tiyuvta as an OpenAI-compatible provider Registry entry plus the provider_endpoints_support.json row that code-quality requires for every openai_like provider. No param_mappings: the endpoint already accepts max_completion_tokens as an alias for max_tokens, so the mapping other entries carry would be a no-op here. Only chat_completions is claimed in the support matrix. The endpoint serves chat completions and legacy completions; the matrix has no field for the latter, and claiming messages or responses would assert LiteLLM's bridge works here without having run it. --- litellm/llms/openai_like/providers.json | 6 ++++++ provider_endpoints_support.json | 17 +++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/litellm/llms/openai_like/providers.json b/litellm/llms/openai_like/providers.json index 164100d4194..e837ed2d863 100644 --- a/litellm/llms/openai_like/providers.json +++ b/litellm/llms/openai_like/providers.json @@ -175,6 +175,12 @@ "base_class": "openai_gpt", "supported_endpoints": ["/v1/chat/completions", "/v1/responses", "/v1/messages"] }, + "tiyuvta": { + "base_url": "https://api.tiyuvta.ai/v1", + "api_key_env": "TIYUVTA_API_KEY", + "api_base_env": "TIYUVTA_API_BASE", + "supported_endpoints": ["/v1/chat/completions", "/v1/completions"] + }, "pinstripes": { "base_url": "https://pinstripes.io/v1", "api_key_env": "PINSTRIPES_API_KEY", diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 0712e8e383d..38bcb15588f 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2366,6 +2366,23 @@ "interactions": true } }, + "tiyuvta": { + "display_name": "tiyuvta (`tiyuvta`)", + "url": "https://inference.tiyuvta.ai/docs", + "endpoints": { + "chat_completions": true, + "messages": false, + "responses": false, + "embeddings": false, + "image_generations": false, + "audio_transcriptions": false, + "audio_speech": false, + "moderations": false, + "batches": false, + "rerank": false, + "a2a": false + } + }, "together_ai": { "display_name": "Together AI (`together_ai`)", "url": "https://docs.litellm.ai/docs/providers/togetherai", From eab6281923ddc525c17c47b844cd07e2099e3b87 Mon Sep 17 00:00:00 2001 From: Avi Fenesh <55081586+avifenesh@users.noreply.github.com> Date: Mon, 17 Aug 2026 13:15:51 +0300 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20messages=20and=20responses=20are=20s?= =?UTF-8?q?upported=20=E2=80=94=20measured,=20not=20assumed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I first declared both false on the grounds that I had not tested LiteLLM's bridge against this endpoint. That was the wrong way to resolve it; I ran the calls instead. Against litellm 1.97.0 with a live key: litellm.responses(...).output_text -> 'ok' await litellm.anthropic_messages(...) -> Anthropic-shaped content blocks, with reasoning mapped into a 'thinking' block litellm.completion(..., stream=True) -> content plus 110 reasoning_content chunks litellm.text_completion(...) -> 'Paris.' tool_calls, response_format json_schema -> both correct Everything left false was probed too, rather than assumed: embeddings and moderations fall through to another provider's credentials, audio and rerank raise 'tiyuvta is not a valid LlmProviders', batches needs a files API this endpoint does not have, and litellm 1.97.0 exposes no a2a entry point. --- provider_endpoints_support.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/provider_endpoints_support.json b/provider_endpoints_support.json index 38bcb15588f..4530e3716de 100644 --- a/provider_endpoints_support.json +++ b/provider_endpoints_support.json @@ -2371,8 +2371,8 @@ "url": "https://inference.tiyuvta.ai/docs", "endpoints": { "chat_completions": true, - "messages": false, - "responses": false, + "messages": true, + "responses": true, "embeddings": false, "image_generations": false, "audio_transcriptions": false,