Console
Capture the JavaScript console output a page produces as it loads — errors, warnings and uncaught exceptions. Useful for monitoring third-party scripts, catching regressions and health-checking your own pages.
This is a web operation — no AI, metered against your web allowance.
Capture console messages
Body parameters
- Name
url- Type
- string
- Required
- Required
- Description
- The absolute URL of the page to process. Rendered with headless Chrome, so JavaScript runs and redirects are followed.
- Name
report_to- Type
- string
- Description
- Webhook URL — an
httporhttpsaddress URLpipe POSTs the result to when it's ready. Required for async requests (the default); omit it only when you sendsync=true. A missing or invalid value returns422.
- Name
sync- Type
- boolean
- Description
- Process the request synchronously, returning the result inline in the response. Defaults to
false(async: return a token now, deliver the result toreport_tovia webhook). See Async & sync modes for the full contract.
- Name
max_age- Type
- string | integer
- Description
- How fresh a cached result must be to be accepted. Either an integer number of seconds (
3600) or a duration string of the form"<number> <unit>"— unitss/min/h/d/w(e.g."2 hours","3 days","30m"). Defaults to7 days, clamped to a max of30 days;0always bypasses the cache. See Caching for all accepted units.
Response
Content type application/json — an array of message objects. An empty array [] means the page produced no errors or warnings.
Message fields
- Name
type- Type
- string
- Description
- One of
error,warningorexception.
- Name
text- Type
- string
- Description
- The message text.
curl -X POST https://urlpipe.dev/console \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'const res = await fetch("https://urlpipe.dev/console", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://example.com" }),
})import requests
res = requests.post(
"https://urlpipe.dev/console",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://example.com"},
)[
{
"type": "error",
"text": "Failed to load resource: the server responded with a status of 404 ()"
},
{
"type": "warning",
"text": "A cookie was set with `SameSite=None` but without `Secure`"
},
{
"type": "exception",
"text": "ReferenceError: bar is not defined"
}
]Message types
- Name
error- Description
- From
console.error()calls and failed resource loads.
- Name
warning- Description
- From
console.warn()calls and browser deprecation warnings.
- Name
exception- Description
- Uncaught JavaScript exceptions caught via
window.onerror.
How it works
URLpipe loads the page in a headless browser, listens for console errors, warnings and uncaught exceptions, then waits briefly after the page's network activity settles so asynchronous scripts have time to run and report. All captured messages are returned together.
Responses
200 OK422 Unprocessable Entity429 Too Many Requests504 Gateway Timeout401 UnauthorizedTry it live — no API key needed
Run this endpoint against any URL right in your browser.