Error Reference

All errors follow RFC 7807 Problem Details format:

{
  "type": "https://api.roveapi.com/errors/invalid-api-key",
  "title": "Invalid API key",
  "status": 401,
  "detail": "A valid API key is required. Pass it as: Authorization: Bearer rvp_live_...",
  "instance": "/v1/browser/session"
}

Authentication Errors

invalid-api-key (401)

API key is missing, malformed, revoked, or not found in the database.

Common causes:

  • Missing Authorization header
  • Key doesn't start with rvp_live_ or rvp_test_
  • Key was revoked via the dashboard or API
  • Typo in the key

Fix: Check that you're passing the full key as Authorization: Bearer rvp_live_xxxx.... Keys are 41 characters long.


test-key-not-allowed (403)

A test key (rvp_test_) was used on an endpoint that requires a live key.

Fix: Use your live key (rvp_live_) for this request.


Billing Errors

insufficient-credits (402)

Your credit balance is too low for the requested operation.

Fix: Buy more credits at roveapi.com/dashboard/billing or switch to a test key for development.


Rate Limiting

rate-limit-exceeded (429)

Too many requests in the current time window.

Response includes:

Retry-After: 12
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1712134800

Fix: Wait until the Retry-After seconds elapse, then retry. Consider spacing out requests or upgrading your plan for higher limits.

PlanRequests/min
Free10
Founder60
Pro300

Session Errors

session-not-found (404)

The session ID doesn't exist or has already been closed.

Fix: Create a new session via POST /v1/browser/session. Sessions are not reusable after closing.


session-expired (410)

Session exceeded the 30-minute inactivity timeout.

Fix: Create a new session. To prevent expiry, ensure actions are sent at least every 30 minutes.


pool-exhausted (503)

No browser contexts available — all slots are in use.

Response includes:

Retry-After: 5

Fix: Wait and retry. This is temporary — contexts free up as other sessions close. If persistent, you may be hitting your concurrent session limit.


Browser Errors

navigation-timeout (504)

Page failed to load within the timeout window (default: 30 seconds).

Common causes:

  • Target site is slow or unresponsive
  • DNS resolution failure
  • Site blocks automated browsers

Fix: Increase timeout_ms in the navigate params, or check that the URL is accessible.


selector-not-found (422)

CSS selector returned no matching elements on the page.

Fix: Verify the selector exists on the page. Use get_a11y_tree first to see what elements are available, then target by accessible label instead of CSS selector.


browser-crash (503)

The Chromium process terminated unexpectedly.

Fix: Create a new session and retry. This is rare but can happen with memory-intensive pages. If it happens consistently on the same page, try blocking images and fonts via block_resources: ["image", "font"] to reduce memory usage.


invalid-action (400)

Unknown DSL action name.

Valid actions: navigate, get_a11y_tree, click, fill, select, scroll, wait_for, screenshot, get_text, get_attribute, evaluate, close_session


invalid-params (400)

Action parameters failed validation.

Fix: Check the Actions DSL reference for required parameters and types.


schema-extraction-failed (422)

Could not extract data matching the provided JSON schema.

Common causes:

  • Page hasn't finished loading — add wait_for_selector to the request
  • Schema field names don't match visible page content
  • Page structure has changed since the schema was written

Fix: Use get_a11y_tree or get_text first to verify the page content, then adjust your schema.