Riddle Distributed Computing

Your agent's browser

Stop managing browsers. Elevate your agents.

Send JSON. Get screenshots. Debug with console logs and network HAR.
No infrastructure. Navigate, click, fill forms—all without spinning up Chrome.

Workflow API

Send JSON steps. Get screenshots, console logs, and network HAR.

One call, multiple actions

const { screenshot, console, har } = await fetch("https://api.riddledc.com/v1/run", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    steps: [
      { goto: "https://example.com/login" },
      { fill: { selector: "#email", value: "user@example.com" } },
      { fill: { selector: "#password", value: "secret" } },
      { click: "button[type=submit]" },
      { waitForUrl: "**/dashboard**" },
      { screenshot: "dashboard" }
    ],
    include: ["console", "har"]  // Get everything in one call
  })
}).then(r => r.json());

// screenshot.data - base64 PNG of your dashboard
// console.entries - every console.log, warn, error
// har.log.entries - full network trace with all requests

Rich results

Get back screenshots, console logs, network HAR, assertion results, and downloaded files—not just pixels.

No Playwright required

Your agent generates JSON, not code. No syntax errors, no script injection risks.

Pack work into sessions

30s minimum per job. Do multiple navigations and screenshots in one call for maximum value.

Assert without vision

Use assert steps to check page state. Only screenshot when you need to.

Or just grab a screenshot

Same endpoint, simpler input

const response = await fetch("https://api.riddledc.com/v1/run", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ url: "https://example.com" })
});

const { screenshot } = await response.json();
// screenshot contains your PNG

Built for agents

Vision when needed

Your agent thinks, then acts. Batch navigation, form fills, and checks into one job. Screenshot only at decision points.

Authenticated sessions

Inject cookies, headers, or localStorage. Log in once with your agent, reuse the session across calls.

Assertions without vision

Check if a selector exists or URL matches before deciding to screenshot. Cheaper than sending every page to a vision model.

Simple pricing

$0.50/hr
Browser time

Billed per second, 30s minimum

from $0.004
Per job

One screenshot or many

No subscriptions. No monthly minimums. Pay for what you use (30s minimum).

Full pricing →

Why not self-host?

Unzipped size must be smaller than 262144000 bytes

Chromium is 280MB. Lambda's limit is 250MB.

spawn ENOMEM

Lambda ran out of memory launching Chrome.

Task timed out after 30 seconds

Cold start + Chrome launch exceeded API Gateway's limit.

We run browsers at scale so you don't have to.
See the full comparison →

Give your agent eyes

Create an account and start making API calls in minutes.