Riddle Distributed Computing

Your agent's browser

Stop managing browsers. Elevate your agents.

Send a Playwright script. Get screenshots, console logs, and network HAR.
No infrastructure. No browser launch. Just results.

The Script API

Write Playwright. Send it to Riddle. Get results.

Just write Playwright

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

// result.screenshot — base64 PNG of the final page
// result.console   — every console.log, warn, error
// result.har       — full network trace

📦 Rich results

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

🎭 Full Playwright API

Use any Playwright method—selectors, waits, assertions, network interception. No proprietary DSL to learn.

⚡ Pack work into sessions

30 seconds of browser time per job — run multiple navigations, screenshots, and actions in one call.

🔍 Assert without vision

Check selectors and URLs in your script before screenshotting. Cheaper than sending every page to a vision model.

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.

Pay only for browser time. From $0.50/hr. See pricing →

Chromium on Lambda is painful—size limits, cold starts, memory errors. See why teams switch to Riddle →

Give your agent eyes

Create an account and start making API calls in minutes.