When to use this runbook
Use when a Salad AI Gateway model-list or chat-completion request fails, times out, is rate limited, disconnects during streaming, or returns missing or unusable output.When not to use it
Do not use it to inspect SaladCloud backend logs, reveal credentials or prompt content, create or fund an organization, operate a self-hosted Container Engine model, or repeat a completion without explicit authorization when the first request may have been processed.Required inputs
- Confirmation that
SALAD_AI_GATEWAY_API_KEYcontains an organization-specific AI Gateway key; never collect or print its value. - Exact endpoint path, method, model ID, streaming mode, UTC incident window, client/SDK name and version, and caller attempt/time budget.
- Response status, safe headers, redacted error body, and any safe request/trace identifier returned by the service.
- The expected output shape and a redacted description of the observed mismatch.
- Explicit approval before any new billable diagnostic completion.
Authoritative sources
No AI Gateway OpenAPI specification is stored in this repository. Treat live responses as evidence, clearly label
undocumented behavior, and do not invent fields, error meanings, retry guarantees, backend state, or provider logs.
Dynamic values to retrieve
- Current reachability and response from
GET https://ai.salad.cloud/v1/modelswith the supplied key. - Current live model IDs and whether the failing exact ID is present.
- Exact response class, safe headers, server-provided retry guidance, and redacted problem details.
- Current published rate for the selected model when billing is part of the incident.
- Client runtime, provider/SDK version, configured base URL, and whether a proxy changed request or streaming behavior.
Preflight checks
- Confirm the base URL is exactly
https://ai.salad.cloud/v1and the selected endpoint is/modelsor/chat/completions. - Confirm Bearer authentication uses the organization-specific AI Gateway key, not
Salad-Api-Keyor the regular user-level key. - Remove key values, prompt/output content, images, tool payloads, and unrelated headers from collected evidence.
- Determine whether the failed completion could have reached the service. If yes or unknown, prohibit an automatic retry.
- Define the classification and evidence needed before any diagnostic request.
Procedure
- Capture the client/runtime, endpoint, model ID, stream flag, UTC window, response class, safe headers, and redacted error without reproducing the secret or content.
- Call
GET /v1/modelswithin a bounded read budget to check reachability and model discovery. A successful catalog read does not verify the key, organization access, or credits for a completion. - Check whether the exact model ID is present. Do not normalize spelling or silently choose another model.
- Compare the request’s field names and types with the minimal examples in Getting Started and with the SDK version in use. Do not infer support from another provider.
- Classify the incident as local configuration, authentication/authorization, unavailable model, request validation, rate limiting, billing/access, transport, service failure, stream handling, or output mismatch.
- Send a minimal diagnostic completion only with explicit approval and only when it will add evidence not available from the original response and model-list read.
- Verify the correction once, preserve redacted evidence, and stop or escalate within budget.
Decision rules
Expected states and responses
GET /v1/models should return 200 with a live catalog. POST /v1/chat/completions should return a successful
OpenAI-compatible response or stream. Error status alone does not prove whether a timed-out or disconnected completion
was processed; no reconciliation endpoint for an individual completion is documented.
The key and pay-per-token access conditions are checked at admission. Revoking or regenerating a key, or exhausting
credits mid-request, does not cancel work already admitted: it can complete and is billed. Do not infer cancellation or
absence of charges from a later authentication or credit error.
Retry behavior
Retry only the model-list read for plausible transient failures within a bounded budget, honoringRetry-After.
Retrying an unchanged authentication, authorization, model, or validation error adds no evidence.
Never automatically retry an uncertain completion or partial stream. A diagnostic or replacement completion is new
billable work and requires explicit approval. If the service clearly rejected the request before processing, apply a
documented correction and verify once within the original budget.
Verification
A diagnosis is verified when live evidence isolates the failure class and the next action has a measurable predicate. When a correction is authorized, success requires the live model list to contain the exact model and one request to return the required output shape. Report unresolved uncertainty instead of converting a successful/models read into
completion success.