Why it matters
Client retries, network retries, and wait-mode fallbacks can all send the same operation more than once.
How ReqRun approaches it
ReqRun deduplicates by project plus idempotency_key. The API key resolves the project automatically.
await reqrun.chat.completions.create({
model: "gpt-5-nano",
messages: [{ role: "user", content: "Classify ticket 842" }],
wait: true,
idempotency_key: "ticket-842-classification",
});