{ "title": "Retry policy", "content": "* Retry per HTTP request, not per multi-step flow.\n* Preserve ordering by retrying only the current step.\n* Avoid duplicating non-idempotent operations.\n\n* Attempts: 3\n* Max delay cap: 30000 ms\n* Jitter: 0.1 (10 percent)\n* Provider defaults:\n * Telegram min delay: 400 ms\n * Discord min delay: 500 ms\n\n* Retries only on rate-limit errors (HTTP 429).\n* Uses Discord `retry_after` when available, otherwise exponential backoff.\n\n* Retries on transient errors (429, timeout, connect/reset/closed, temporarily unavailable).\n* Uses `retry_after` when available, otherwise exponential backoff.\n* Markdown parse errors are not retried; they fall back to plain text.\n\nSet retry policy per provider in `~/.openclaw/openclaw.json`:\n\n* Retries apply per request (message send, media upload, reaction, poll, sticker).\n* Composite flows do not retry completed steps.", "code_samples": [], "headings": [ { "level": "h2", "text": "Goals", "id": "goals" }, { "level": "h2", "text": "Defaults", "id": "defaults" }, { "level": "h2", "text": "Behavior", "id": "behavior" }, { "level": "h3", "text": "Discord", "id": "discord" }, { "level": "h3", "text": "Telegram", "id": "telegram" }, { "level": "h2", "text": "Configuration", "id": "configuration" }, { "level": "h2", "text": "Notes", "id": "notes" } ], "url": "llms-txt#retry-policy", "links": [] }