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
Authorizationheader - Key doesn't start with
rvp_live_orrvp_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.
| Plan | Requests/min |
|---|---|
| Free | 10 |
| Founder | 60 |
| Pro | 300 |
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_selectorto 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.