hypedata
  • Product
  • How it works
  • Use cases
  • Pricing
  • Developers
Sign in Start free
Hypedata/ Developers/ Errors

Errors & codes.

Every code Hypedata returns, what it means, whether it's retryable, and the exact remediation step. Use the code field as the stable identifier in your error handling — HTTP statuses are for humans, codes are for machines.

EnvelopeJSON
Retryable markerRetry-After header
TraceX-Trace-Id header
StabilityAdditive only
Contents
  1. 01Error shape
  2. 02Auth (4xx)
  3. 03Validation (4xx)
  4. 04Billing (402)
  5. 05Rate limit (429)
  6. 06Acceptable use (451)
  7. 07Target failures (5xx)
  8. 08Platform (5xx)
  9. 09Handling strategy

01Error shape

All errors share one envelope. The code field is stable and machine-readable; the message field is human-readable and may change between versions.

{
  "status": "error",
  "code": "rate_limited",
  "message": "You hit your plan's per-second cap. Slow down or upgrade.",
  "docs_url": "https://hypedata.io/docs/errors.html#ratelimit",
  "retryable": true,
  "retry_after_s": 2,
  "trace_id": "trc_3F2D1A77B0E1",
  "detail": { /* code-specific extras */ }
}
  • retryable — boolean. If true, your client should retry with backoff. SDKs do this automatically up to maxRetries.
  • retry_after_s — present on 429 and 503. Matches the Retry-After header.
  • trace_id — paste this into a support ticket and we can find the exact request in our logs within seconds.

02Auth · 401 / 403

HTTPCodeRetryMeaning
401missing_credentialsNoNo Authorization header sent.
401malformed_tokenNoHeader present but token doesn't match hd_(live|test)_*.
401unknown_keyNoToken shape valid but no such key.
401revokedNoThe key was revoked. detail.revoked_at tells you when.
403unauthorized_ipNoSource IP not on the key's allow-list.
403insufficient_scopeNoKey lacks the scope required. detail.required lists it.

03Validation · 400 / 422

HTTPCodeRetryMeaning
400invalid_urlNoThe url isn't http(s):// or is malformed.
400conflict_paramsNoMutually exclusive parameters set. detail.fields names which.
400body_too_largeNoRequest body exceeded 25 MB.
422schema_invalidNoYour extract object isn't a valid sketch or JSON Schema.
422validation_failedNoParser output didn't satisfy your strict JSON Schema. detail.partial_data is available.

04Billing · 402

HTTPCodeRetryMeaning
402workspace_balanceNoWorkspace is out of credits. Top up to resume.
402key_ceiling_exceededNoThis key's lifetime credit cap was hit. Raise it or use another key.
402card_declinedMaybeAuto top-up failed. Update the payment method and retry.
402subscription_past_dueNoWorkspace's monthly invoice is past due. Settle in billing.

05Rate limit · 429

HTTPCodeRetryMeaning
429rate_limitedYesYou hit a per-second / per-minute cap. retry_after_s tells you when.
429concurrency_limitYesToo many concurrent streams or jobs. Wait for one to finish.
429fair_use_trimYesSustained high load on a hard target — we're throttling to stay polite. See Rate limits.

06Acceptable use · 451

HTTPCodeRetryMeaning
451aup_violationNoTarget is on our block-list (e.g. CSAM, sanctioned domains). See Acceptable Use.
451geo_restrictedNoSource jurisdiction prohibited from accessing the target. Try a different proxy region.

07Target failures · 5xx pass-through

These are conditions about the upstream site, not Hypedata. We surface them so your code can decide whether to retry.

HTTPCodeRetryMeaning
504upstream_timeoutYesThe target didn't respond in time. Free retry.
502upstream_bad_gatewayYesTarget returned a transient 5xx. Free retry.
521upstream_downYesTarget refused all connections. Retry after a longer backoff.
522blockedMaybeAnti-bot wall after exhausting our internal retries. Try proxy_type: "residential" or "mobile".
523captchaMaybeTarget served a captcha challenge we couldn't solve. Try residential or a session.
410upstream_goneNoTarget returned 410 Gone. The URL is permanently dead.

08Platform · 5xx

HTTPCodeRetryMeaning
500internal_errorYesSomething went wrong on our side. Includes a trace_id — file it with support.
503maintenanceYesBrief scheduled or unscheduled maintenance window. Honor Retry-After.
503region_unavailableYesA specific proxy region is down. Try without geo pinning, or wait.

09Handling strategy

A minimal but production-grade error handler:

try {
  const page = await hd.scrape({ url });
  await save(page);
} catch (e) {
  if (e.code === "workspace_balance") page("#oncall");
  else if (e.code === "blocked") await retryWithResidential(url);
  else if (e.retryable) await queue.retry(url, e.retry_after_s);
  else await deadLetter(url, e);
}

Three rules:

  1. Always branch on code, never on message.
  2. Always honor retry_after_s — clipping it produces 429 storms that get you trimmed.
  3. Always capture trace_id into your logs. It's the only field that makes a support ticket actionable.
← Previous SDKs Next → Rate limits
hypedata. SHERIDAN, WY · EST. 2024
HYPELABS, LLC · v2.4.0
hypedata

Production-grade web data infrastructure. Operated by HypeLabs, LLC under the laws of Wyoming, USA.

All systems operational

Product

  • Scrape API
  • SERP API
  • Stream API
  • AI Parser
  • Pricing

Developers

  • Documentation
  • SDKs
  • API reference
  • Quickstart
  • Status page

Company

  • About
  • Customers
  • Blog
  • Careers
  • Press kit

Legal

  • Terms
  • Privacy
  • DPA
  • Acceptable use
  • Security
© 2026 HYPELABS, LLC · EIN 35-2851293 · SHERIDAN, WY
Twitter / XGitHubLinkedIn