# 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.

URLpipe is free to start — no credit card. The Free plan includes a monthly allowance of enough credits for both the browser and the AI endpoints, so you can build and test straight away.

## 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`). The project's API key is shown to you as soon as it is created — copy it then, because it is shown only once. Confirm your email address and the key is live.

[Create your free account](https://urlpipe.dev/auth/sign-up/new)

## 2. Keep your API key safe

Treat the key like a password: it authenticates every request. We store only a hash of it, so if you lose it, rotate it from the project's **Settings → API key** and you are shown the new one. See [Authentication](https://urlpipe.dev/docs/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, with `sync: true` so the result comes straight back in the response:

```
curl -X POST https://urlpipe.dev/markdown \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "sync": true}'
```

That's it — the response body is the Markdown for the page. Every other endpoint, like [/screenshot](https://urlpipe.dev/docs/screenshot) or [/meta](https://urlpipe.dev/docs/meta), takes the exact same request shape.

Prefer a library? The official [client libraries](https://urlpipe.dev/docs/client-libraries) for Python, JavaScript, Ruby and Go make the same call in one line, and add retries that never bill twice, typed errors and webhook verification:

```
# pip install urlpipe

import urlpipe

client = urlpipe.Client()  # reads URLPIPE_API_KEY

page = client.markdown("https://example.com")
print(page.data)
```

## 4. Get the result back: async or sync

By default, requests are **async**: leave out `sync` and you get a token back immediately, and the result reaches you either at a `report_to` webhook URL or from [GET /result/:token](https://urlpipe.dev/docs/results) whenever you ask for it. That is the better fit for slow work like Lighthouse audits and for anything you run in bulk; `sync: true` suits a quick one-off like the one above. Both are covered in [Async & sync modes](https://urlpipe.dev/docs/async).

## What's next

- [Understand authentication and API keys](https://urlpipe.dev/docs/authentication)
- [Use a client library for Python, JavaScript, Ruby or Go](https://urlpipe.dev/docs/client-libraries)
- [Serve repeat requests for free with caching](https://urlpipe.dev/docs/caching)
- [Learn what each call costs in credits](https://urlpipe.dev/docs/credits)
- [Browse the full endpoint reference](https://urlpipe.dev/docs/html)

Source: https://urlpipe.dev/docs/quickstart
