Quickstart
This guide gets you from zero to your first response in a couple of minutes. You'll create an account, grab a project API key, and send your first request.
1. Create an account and a project
Sign up, then create your first project. Every project has its own API key and its own request history, so it's normal to have one project per app or environment (say, production and staging). Your API key is emailed to you as soon as the project is created.
2. Find your API key
You can always find a project's key in the dashboard under Settings → API key. Treat it like a password: it authenticates every request and can be rotated at any time. See Authentication for the details.
3. Make your first request
Send a POST to any endpoint with your bearer token and a JSON body containing the url. Here we convert a page to Markdown:
curl -X POST https://urlpipe.dev/markdown \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'const res = await fetch("https://urlpipe.dev/markdown", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ url: "https://example.com" }),
})
if (!res.ok) throw new Error(await res.text())
const markdown = await res.text()import requests
res = requests.post(
"https://urlpipe.dev/markdown",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://example.com"},
)
res.raise_for_status()
markdown = res.textrequire "net/http"
require "json"
uri = URI("https://urlpipe.dev/markdown")
res = Net::HTTP.post(
uri,
{ url: "https://example.com" }.to_json,
"Authorization" => "Bearer YOUR_API_KEY",
"Content-Type" => "application/json",
)
markdown = res.bodyThat's it — the response body is the Markdown for the page. Web endpoints like /screenshot and JSON endpoints like /meta follow the exact same request shape.
4. Get the result back: async or sync
By default, requests are async: you pass a report_to webhook URL and URLpipe delivers the result there when it's ready. Add sync: true to any request to run it synchronously instead and get the result directly in the HTTP response. Both are covered in Async & sync modes.