ruvnet/ruflo · error · LLMProviderError

ANTHROPIC_${response.status}

ANTHROPIC_${response.status}

Error message

${message}

What it means

handleErrorResponse mapped an Anthropic HTTP 429 response to a RateLimitError. The account or model is rate-limited; the upstream message (or raw body when unparseable) is preserved and can be retried after backoff.

Source

Thrown at v3/@claude-flow/providers/src/anthropic-provider.ts:449

  private async handleErrorResponse(response: Response): Promise<never> {
    const errorText = await response.text();
    let errorData: { error?: { message?: string } };

    try {
      errorData = JSON.parse(errorText);
    } catch {
      errorData = { error: { message: errorText } };
    }

    const message = errorData.error?.message || 'Unknown error';

    switch (response.status) {
      case 401:
        throw new AuthenticationError(message, 'anthropic', errorData);
      case 429:
        throw new RateLimitError(message, 'anthropic', undefined, errorData);
      default:
        throw new LLMProviderError(
          message,
          `ANTHROPIC_${response.status}`,
          'anthropic',
          response.status,
          response.status >= 500,
          errorData
        );
    }
  }
}

View on GitHub (pinned to fa13ee4ad6)

Solutions

  1. Check network connectivity and endpoint reachability.
  2. Log the underlying message to distinguish network errors from API errors.
  3. Retry idempotent requests after transient failures.
Defensive patterns

Strategy: retry

When it happens

Trigger: The Anthropic provider wraps a network or parsing failure with the underlying message.

Common situations: Network failure, timeout, or an unexpected response body from the API endpoint.


AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18). Data as JSON: /api/errors/db8c2907ae7c1a5d. Report an issue: GitHub.