koala73/worldmonitor · error · ApiError

data.message || 'Too many requests'

Error message

data.message || 'Too many requests'

What it means

HTTP-layer error in submitContact: the direct Convex contact-messages mutation was rejected with a rate-limit policy failure (ConvexError with data.kind 'rate_limited'). The seam preserves the policy message (defaulting to 'Too many requests') so expected client throttling surfaces as 429 rather than an opaque 500.

Source

Thrown at server/worldmonitor/leads/v1/submit-contact.ts:199

  const client = new ConvexHttpClient(convexUrl);
  try {
    await client.mutation(api.contactMessages.submit, {
      name: safeName,
      email: email.trim(),
      organization: safeOrg,
      phone: safePhone,
      message: safeMsg,
      source: safeSource,
    });
  } catch (err) {
    // Preserve policy failures from direct Convex enforcement at the HTTP seam
    // instead of turning expected client errors into opaque 500 responses.
    // Convex serializes ConvexError payloads onto err.data.
    if (err instanceof ConvexError) {
      const data = getConvexPolicyErrorData(err);
      if (data?.kind === 'rate_limited') {
        throw new ApiError(429, data.message || 'Too many requests', '');
      }
      if (data?.kind === 'FREE_EMAIL_NOT_ALLOWED') {
        throw new ApiError(422, data.message || 'Please use your work email address', '');
      }
    }
    throw err;
  }

  const emailSent = await sendNotificationEmail(
    safeName,
    email.trim(),
    safeOrg,
    safePhone,
    safeMsg,
    ip,
    country,
  );

View on GitHub (pinned to a96956387a)

Solutions

  1. Wait for the rate-limit window to pass and resubmit
  2. Avoid duplicate submissions (repeated clicks each consume limit budget)
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at server/worldmonitor/leads/v1/submit-contact.ts:198 when the library encounters an invalid state.

Common situations: See trigger scenarios.

Understand the failure class


AI-assisted analysis of koala73/worldmonitor@a96956387a (2026-08-21). Data as JSON: /api/errors/b5fb1be3d08364e8. Report an issue: GitHub.