Skip to content
Get API key API key

API transition

We are upgrading the LLM Serving Service to provide lower latency, higher throughput, and a more standardized API experience.

The New API introduces consistent response structures, structured error handling, and additional diagnostic information, making integrations easier to maintain and troubleshoot.

To ensure a smooth transition, the Legacy API remains available during the migration period. This gives applications time to adapt while continuing to use the existing API behavior.

This section explains the transition timeline, required changes, and compatibility considerations for applications moving from the Legacy API to the New API.

The transition takes place in three phases. Exact dates will be communicated separately.

EndpointPhase 1 (2 weeks)Phase 2 (2 months)Phase 3 (permanent)
Existing llm-server.llmhub.t-systems.netLegacy API formatNew API formatDiscontinued
Legacy llm-server.legacy.ai.t-systems.netLegacy API formatLegacy API formatDiscontinued
New llm-server.ai.t-systems.netNot available yetNew API formatNew API format

Phase 1 — Preparation. The existing endpoint continues to use the Legacy API format. Applications that depend on the current response or error structure can switch to the dedicated Legacy endpoint, https://llm-server.legacy.ai.t-systems.net/v2. This endpoint is already available and preserves the existing API behavior until the end of Phase 2.

Phase 2 — Migration. The existing endpoint switches to the New API format. The dedicated Legacy endpoint remains available for applications that still require the previous format. The new permanent endpoint becomes available: https://llm-server.ai.t-systems.net/v1.

Phase 3 — New API. The existing and Legacy endpoints are discontinued. All applications should use the permanent New API endpoint, https://llm-server.ai.t-systems.net/v1.

  1. In Phase 1, if needed: Does your application depend on the current response or error format? Then switch your base URL to https://llm-server.legacy.ai.t-systems.net/v2. Your application keeps working as it does today until the end of Phase 2. The Legacy endpoint is already available, so you can make this switch before Phase 1 begins.
  2. By the end of Phase 2, all customers: Move to the New API endpoint https://llm-server.ai.t-systems.net/v1 and the New API format.

The New API uses /v1 paths, for example /v1/chat/completions instead of /v2/chat/completions. When moving to the New API, change the base URL to https://llm-server.ai.t-systems.net/v1 and review your model identifiers and response handling.

Most applications can migrate by updating their endpoint while keeping their existing authentication mechanism and standard request structure.

SettingLegacy APINew API
Recommended base URLhttps://llm-server.legacy.ai.t-systems.net/v2https://llm-server.ai.t-systems.net/v1
AuthenticationAPI keyAPI key
Supported keysExisting and new API keysExisting and new API keys
Model identifiersExisting model namesExisting names supported; provider prefixes recommended
Standard API paths/v2/.../v1/...

Existing API keys remain supported during the transition.

EndpointExisting API keysNew API keys
Existing endpointSupportedNot supported
Legacy endpointSupportedSupported
New endpointSupportedSupported

With the introduction of the new management UI, you will also be able to create and manage new API keys through a self-service interface.

Existing API keys will be deprecated in favor of newly issued keys. Deprecation does not immediately invalidate existing keys. Any future retirement will be communicated separately.

Applications using existing keys do not need to replace them solely to access the New API.

The New API supports both unprefixed and provider-prefixed model identifiers. For example, the following model name can be used:

JSON
{
"model": "gpt-6.1-sol"
}

For explicit provider selection, use the provider/model-name format:

JSON
{
"model": "azure/gpt-6.1-sol"
}

The prefix for each model is listed in /v1/models.

Provider prefixes are recommended but not required. Using the provider/model-name format makes routing more predictable by explicitly selecting the intended provider.

If your application retrieves model information dynamically, review the model-list response structure: the Legacy API serves it at GET /v2/models, the New API at GET /v1/models. The New API can expose additional model capabilities and pricing information, while some fields from the Legacy API are no longer available in the same format.

AspectLegacy APINew API
Model identifiergpt-6.1-solazure/gpt-6.1-sol
Model ownershipowned_by, e.g. T-Systems InternationalMay be empty or absent
Model typemeta_data.model_type, e.g. LLMNot included
Top-level object"list"May be empty or absent
Model entry object"model"May be "model" or absent
Context lengthmeta_data.max_sequence_lengthcontext_length
Output token limitmeta_data.max_output_lengthmax_output_tokens
Additional informationDeployment and provider metadataMay include alias, max_input_tokens, and pricing

If your application retrieves models dynamically, check whether it depends on:

  • meta_data.model_type to distinguish LLM and embedding models.
  • owned_by or model-level object fields.
  • The top-level object: "list" value.
  • Unprefixed model identifiers in model-list results.

Applications using strict response validation should account for these differences.

For available models, supported capabilities, and configuration details, see Models and the Model comparison.

New datasheet endpoints under /v1/datasheet will soon be available. They describe each model’s capabilities and parameter specifications: which endpoints a model supports, which parameters it accepts, and their allowed values and defaults.

The following example shows how a model is specified:

JSON
{
"name": "example-model",
"max_input_tokens": 200000,
"max_output_tokens": 64000,
"supported_endpoints": ["/v1/chat/completions", "/v1/responses"],
"supports_reasoning": true,
"model_parameters": [
{
"id": "temperature",
"type": "number",
"default": 1,
"range": { "min": 0, "max": 2 }
},
{
"id": "reasoning_effort",
"type": "select",
"default": "medium",
"options": ["low", "medium", "high"]
}
]
}

The New API (https://llm-server.ai.t-systems.net/v1) supports standard chat completion requests, including commonly used parameters such as messages, temperature, top_p, tools, and response_format, where supported by the selected model.

Most applications can continue using their existing request structure with only minor adjustments.

Terminal
curl -X POST "https://llm-server.legacy.ai.t-systems.net/v2/chat/completions" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6.1-sol",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'

The New API example uses an explicit provider prefix (azure/) for predictable routing; the prefix for each model is listed in /v1/models. An unprefixed model name such as gpt-6.1-sol can also be used when the model is available through automatic provider resolution.

AspectLegacy APINew API
Standard chat parametersSupportedSupported, subject to model capabilities
Model identifiersUnprefixed model namesUnprefixed and provider-prefixed names
Provider selectionManaged by the existing routing configurationExplicit selection supported through provider prefixes
Tool callingSupportedSupported through standard tools and tool_calls
Structured outputSupported when available for the modelSupported when available for the model
Provider-specific parametersGenerally forwarded to the providerMay be filtered or ignored unless supported
Request validationGateway and provider validationPrimarily provider-dependent; some parameters may be adjusted or ignored

For standard integrations: Update the endpoint. Existing request structures and unprefixed model names can continue to work, provided the model is available.

For predictable model routing: Use provider-prefixed model identifiers.

For advanced integrations: If your application uses provider-specific parameters, custom request fields, or model-specific features, verify that the selected model supports them through the New API.

Request validation depends on the model provider and API parameter handling. Some unsupported or out-of-range parameters may be adjusted or silently ignored instead of being rejected.

For detailed model capabilities and supported parameters, see Models and the Model comparison.

The New API (https://llm-server.ai.t-systems.net/v1) introduces a standardized response structure across different model providers. This improves consistency while preserving the core fields used by standard chat completion integrations: choices, message, finish_reason, and usage remain available.

JSON
{
"id": "chatcmpl-example",
"object": "chat.completion",
"model": "gpt-6.1-sol",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello!"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 10,
"completion_tokens": 3,
"total_tokens": 13
}
}

The value of response.model may also differ from the requested model identifier for some providers.

AspectLegacy APINew API
Response structureProvider-oriented response formatStandardized chat completion format
Standard fieldschoices, message, usage, etc.Same core fields
Token usageOriginal provider usage informationUsage details may vary by provider; zero-valued optional fields may be omitted
Optional fieldsMay include explicit null or empty valuesSome optional fields may be omitted
Response modelTypically the requested model identifierMay contain the provider-reported model name, which can differ from the requested identifier
Provider-specific metadataGenerally preservedMay be normalized or omitted
Additional informationProvider-specific fieldsOptional diagnostic metadata, including latency information

Standard token usage fields remain available, but additional usage details depend on the selected model and provider. For example, some providers return detailed completion token breakdowns, while others expose different usage fields or omit optional details entirely.

Fields such as completion_tokens_details, reasoning_tokens, or provider-specific token categories should therefore be treated as optional. Zero-valued usage details may also be omitted rather than returned explicitly as 0.

Applications that track token consumption should account for these differences when processing usage information.

The New API may include additional diagnostic information through the extra_fields object. Depending on the request and model, this may include:

  • Latency information — helps understand request processing time.
  • Routing information — provides additional details about how the request was processed.
  • Provider response metadata — additional information when available.

These fields are optional and should not be treated as part of the required standard response structure.

For standard integrations: Applications that primarily use choices, message, finish_reason, and the common token usage fields generally require minimal changes to response parsing.

For model identification: Review code that assumes response.model always matches the requested model name.

For strict response validation: Allow optional fields to be absent and support additional response metadata.

For token accounting: Review provider-specific usage fields and do not assume that every provider returns identical token breakdowns.

For provider-specific integrations: Review any code that depends on nonstandard response fields.

The New API (https://llm-server.ai.t-systems.net/v1) continues to support Server-Sent Events (SSE). Most streaming behavior remains compatible, but token usage information is returned differently. For streaming basics, see Streaming.

BehaviorLegacy APINew API
Streaming protocolSSESSE
Token usageSeparate final usage chunkIncluded in the completion’s final chunk
Usage by defaultIncluded without an explicit requestIncluded without an explicit request
Completion marker[DONE][DONE]
Errors during streamingStream may terminate without an explicit error eventStructured errors may be included in the stream
JSON
{
"choices": [],
"usage": {
"total_tokens": 150
}
}

Both APIs include token usage in successful streaming responses by default, even when stream_options.include_usage is not explicitly requested. The main difference is where this information appears in the stream.

Applications that process SSE responses directly should read token usage from whichever chunk contains the usage field, rather than relying on a separate chunk with an empty choices array.

Do not assume that streaming usage details will have an identical structure across all model providers.

The New API (https://llm-server.ai.t-systems.net/v1) introduces structured error responses, making it easier for applications to identify errors and handle them consistently. Standard HTTP status codes continue to indicate request outcomes, while certain error scenarios now have more specific status codes. For the general error reference, see Error codes.

ScenarioLegacy APINew API
Missing API key403401
Invalid API key401401
Blocked or deactivated key401403
Model not found404400 for model resolution errors
Model access denied404403
Rate limit exceeded429429
Budget exceeded429402
Invalid request400, sometimes plain text400, structured JSON
Provider connection failure500502
Provider timeout500504

The Legacy API typically returns provider error information as a string inside detail. The New API returns structured error information.

JSON
{
"detail": "Error: 400 - Bad Request - {\"error\":{\"message\":\"Invalid request parameter\",\"type\":\"invalid_request_error\"}}"
}

Structured error fields allow applications to access error details without parsing an embedded provider error message.

For standard HTTP error handling: Applications can continue relying on HTTP response status codes.

For custom error handling: Review code that depends on specific status codes, error-message text, or the Legacy API’s detail field.

Use the actual HTTP response status as the primary indicator, and treat error fields such as type, code, and param as optional.

The New API distinguishes between provider rate limits, service-level rate limits, and budget restrictions.

ScenarioHTTP statusRetry information
Provider rate limit429Provider-supplied retry information may be available
Service-level rate limit429No Retry-After header; reset information may appear in the error message
Budget exceeded402No Retry-After header; budget information may appear in the error message

When a provider supplies a Retry-After header and it is forwarded in the response, applications should respect it. For service-level rate limits, implement your own backoff strategy; see Rate limits.

Budget-related errors should be handled separately and should not trigger automatic retries.

Validate the response Content-Type before attempting to parse the response body. Some unsupported API routes or methods may return HTML rather than JSON.

A successful HTTP status alone does not guarantee that the response contains the expected API structure.

When reporting an issue, include the request timestamp, endpoint, HTTP status, and any available request or trace identifier. This helps support investigate requests more efficiently.

The New API provides a more scalable and standardized foundation for LLM integrations while maintaining compatibility with commonly used chat completion features. Before migrating, review your model identifiers, request parameters, response parsing, token usage handling, streaming behavior, and error handling.

All applications should move to the permanent New API endpoint by the end of Phase 2. For questions or migration support, contact AI@t-systems.com.