> ## Documentation Index
> Fetch the complete documentation index at: https://docs.morphllm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Standby Requests

> 50% off GLM-5.2 for latency-tolerant workloads. Set service_tier: standby and pay half.

Send `service_tier: "standby"` and pay half price. Standby requests run on spare capacity: they're deprioritized in the queue, and when a region is busy they shed a fast `429` instead of waiting. Built for batch and background workloads where a retry costs nothing.

| Tier        | Input per 1M | Cached input per 1M | Output per 1M |
| ----------- | ------------ | ------------------- | ------------- |
| Default     | \$1.10       | \$0.22              | \$4.10        |
| **Standby** | **\$0.55**   | **\$0.11**          | **\$2.05**    |

Available on GLM-5.2 (`morph-glm52-744b`). Kimi K3 coming soon. Other models accept the field but bill at standard rates.

## Quick Start

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    from openai import OpenAI

    client = OpenAI(
        api_key="YOUR_API_KEY",
        base_url="https://api.morphllm.com/v1",
    )

    response = client.chat.completions.create(
        model="morph-glm52-744b",
        messages=[{"role": "user", "content": "Summarize this diff: ..."}],
        service_tier="standby",
    )
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript theme={null}
    import OpenAI from "openai";

    const client = new OpenAI({
      apiKey: "YOUR_API_KEY",
      baseURL: "https://api.morphllm.com/v1",
    });

    const response = await client.chat.completions.create({
      model: "morph-glm52-744b",
      messages: [{ role: "user", content: "Summarize this diff: ..." }],
      service_tier: "standby",
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST "https://api.morphllm.com/v1/chat/completions" \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "morph-glm52-744b",
        "messages": [{"role": "user", "content": "Summarize this diff: ..."}],
        "service_tier": "standby"
      }'
    ```
  </Tab>
</Tabs>

## How it behaves

* Accepted values: `"auto"`, `"default"`, `"standby"`. Anything else is a 400. Omitting the field means default.
* Standby is admitted only when the region has spare capacity. When it doesn't, you get a fast `429` with `Retry-After: 15`: retry after the delay, or resend as `default` if you need it now.
* Shed requests are never billed. You pay only for requests that run.
* [Prompt caching](/sdk/components/caching) still applies, and cached standby input gets both discounts: \$0.11/1M.
* The response echoes the tier that served your request in its `service_tier` field.

## When to use it

Standby fits work where nobody is waiting on the response: nightly batch jobs, eval runs, dataset generation, background summarization, re-indexing. It does not fit interactive traffic; under load your requests are the first to shed.

## Pitfalls

<AccordionGroup>
  <Accordion title="Getting frequent 429s">
    Expected under load: standby runs on spare capacity. Honor `Retry-After` (15s) with a retry loop, or fall back to `service_tier: "default"` for the requests that can't wait.
  </Accordion>

  <Accordion title="Higher latency than default">
    Standby requests sit behind default-tier traffic in the queue. If p95 latency matters, use the default tier.
  </Accordion>
</AccordionGroup>

## See Also

* [Prompt Caching](/sdk/components/caching) — stack both discounts on repeated prefixes
* [Open Source Models](/sdk/components/fast-models) — pricing and model list
