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 requestsRich 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 PNGBuilt 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
Billed per second, 30s minimum
One screenshot or many
No subscriptions. No monthly minimums. Pay for what you use (30s minimum).
Why not self-host?
Chromium is 280MB. Lambda's limit is 250MB.
Lambda ran out of memory launching Chrome.
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.