Skip to content

feat: add service_tier support for priority processing#159

Closed
double-di wants to merge 1 commit into
mainfrom
ddorozhkin/service-tier
Closed

feat: add service_tier support for priority processing#159
double-di wants to merge 1 commit into
mainfrom
ddorozhkin/service-tier

Conversation

@double-di

@double-di double-di commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Add per-request service_tier parameter to all SDK endpoints, enabling users to opt into priority processing.

Usage

from xai_sdk import Client
from xai_sdk.chat import user

client = Client()

# Set priority on a chat request
chat = client.chat.create(model="grok-4.3", service_tier="priority")
chat.append(user("Hello!"))
response = chat.sample()
print(response.service_tier)  # 'priority' or 'default'

# Also works on image and video endpoints
image = client.image.sample(
    prompt="A sunset over mountains",
    model="grok-imagine-image",
    service_tier="priority",
)

Changes

New type

  • ServiceTier: Literal["auto", "default", "priority"]

Chat

  • service_tier parameter on client.chat.create()
  • Response.service_tier property — returns the tier actually used for the request

Image (async + sync)

  • service_tier parameter on sample(), sample_batch(), prepare()

Video (async + sync)

  • service_tier parameter on generate(), extend(), start(), extend_start(), prepare(), prepare_extension()

Proto bindings

  • Updated usage_pb2 with ServiceTier enum
  • Updated chat_pb2, image_pb2, video_pb2 with service_tier fields

All new parameters are optional with None default — fully backward compatible.

Add per-request service_tier parameter to all SDK endpoints. Users can
set service_tier='priority' on any request to opt into priority
processing.

Changes:
- ServiceTier type: Literal['auto', 'default', 'priority']
- chat.create(): service_tier parameter
- Response.service_tier: property returning the tier used
- image.sample/prepare: service_tier parameter
- video.generate/extend/start: service_tier parameter
- Updated proto bindings (usage, chat, image, video)
@double-di double-di requested a review from a team as a code owner June 2, 2026 06:52
@double-di double-di closed this Jun 10, 2026
double-di added a commit that referenced this pull request Jun 12, 2026
Add `service_tier` parameter to `chat.create()` for requesting priority
processing at a higher token price.

## Changes

- **`ServiceTier` type**: `Literal["default", "priority"]` in
`types/common.py`
- **`service_tier.py`**: Proto conversion helpers
(`service_tier_to_proto`, `service_tier_from_proto`)
- **`chat.py`**: Added `service_tier` parameter to `create()`, streaming
chunk aggregation, and `Response.service_tier` property
- **Proto updates**: `ServiceTier` enum in `usage_pb2`, `service_tier`
field on request/response/chunk in `chat_pb2` (v5 and v6)

## Usage

```python
# Request priority processing
chat = client.chat.create(
    model="grok-3-latest",
    messages=[{"role": "user", "content": "Hello"}],
    service_tier="priority",
)
response = await chat.send()
print(response.service_tier)  # "priority" or "default"
```

Supersedes #159.

---------

Co-authored-by: Denis Dorozhkin <ddorozhkin@xai.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant