Guide

Handling Retries

Handling retries means deciding which failures can be retried safely and how clients should observe the retry lifecycle.

Use idempotency keys

Give each logical operation a stable idempotency key so client-side retries do not create duplicate LLM requests.

TypeScript
import { ReqRun } from "@reqrun/sdk";

const reqrun = new ReqRun({
  apiKey: process.env.REQRUN_API_KEY!,
  baseURL: "https://api.reqrun.com",
});

const result = await reqrun.chat.completions.create({
  model: "gpt-5-nano",
  messages: [{ role: "user", content: "Summarize this incident." }],
  wait: true,
  idempotency_key: "incident-421",
});

Inspect status

If wait=true falls back to async, call requests.get(id) to inspect status and attempts.

TypeScript
const request = await reqrun.requests.get("rr_abc123");

if (request.status === "completed") {
  console.log(request.result);
}