alibaba/page-agent · error · InvokeError

SERVER_ERROR

SERVER_ERROR

Error message

Server error: ${errorMessage}

What it means

The endpoint returned an HTTP 5xx status — a server-side failure at the provider (overload, upstream crash, gateway timeout). The response body's error message (or statusText) is included, and the parsed errorData is attached as details.

Source

Thrown at packages/llms/src/OpenAIClient.ts:116

			}
			const errorMessage = errorData?.error?.message || response.statusText

			if (response.status === 401 || response.status === 403) {
				throw new InvokeError(
					InvokeErrorTypes.AUTH_ERROR,
					`Authentication failed: ${errorMessage}`,
					errorData
				)
			}
			if (response.status === 429) {
				throw new InvokeError(
					InvokeErrorTypes.RATE_LIMIT,
					`Rate limit exceeded: ${errorMessage}`,
					errorData
				)
			}
			if (response.status >= 500) {
				throw new InvokeError(
					InvokeErrorTypes.SERVER_ERROR,
					`Server error: ${errorMessage}`,
					errorData
				)
			}
			throw new InvokeError(
				InvokeErrorTypes.UNKNOWN,
				`HTTP ${response.status}: ${errorMessage}`,
				errorData
			)
		}

		// 4. Parse and validate response
		let data: any
		try {
			data = await response.json()
		} catch (error) {
			if ((error as any)?.name === 'AbortError') throw error

View on GitHub (pinned to d02db1ee7c)

Solutions

  1. Retry with exponential backoff — 5xx is usually transient
  2. If using a local/self-hosted server, check its logs and memory (reduce context length or model size)
  3. Check the provider status page for ongoing incidents
  4. Inspect attached errorData for the provider's specific error message
Defensive patterns

Strategy: retry

Type guard

const isServerError = (e: unknown): e is InvokeError =>
  e instanceof InvokeError && e.code === 'SERVER_ERROR'

Try / catch

try {
  return await withRetry(() => client.invoke(req), { retries: 3, on: isServerError })
} catch (e) {
  if (isServerError(e)) notifyOps(`Provider 5xx: ${e.message}`)
  throw e
}

Prevention

When it happens

Trigger: invoke() receives 500/502/503/504 from the provider: OpenAI incident, overloaded local inference server, OOM'd llama.cpp process, reverse proxy (nginx) returning 502 because the backend crashed.

Common situations: Provider outage (check status page); local model server running out of memory or crashing mid-request; gateway/proxy misrouting; very large prompts causing the upstream to time out and return 504.

Related errors


AI-assisted analysis of alibaba/page-agent@d02db1ee7c (2026-08-28). Data as JSON: /api/errors/dbec91bef806a583. Report an issue: GitHub.