> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pocketutils.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Screenshot, PDF, SSL, meta, and link APIs with a 300ms median response.

PocketUtils is a collection of REST APIs for the web tasks that show up in almost every product: rendering a page as a screenshot or PDF, checking whether a site is up, scanning its meta tags or SSL certificate, extracting or auditing its links, and converting XBEL bookmark files.

Every endpoint is billed in **credits**, not requests, and every endpoint is the exact same one that powers the free playground on each [tool page](https://pocketutils.com/tools) — there's no separate "production" implementation for your integration to drift out of sync with.

```bash theme={null}
curl "https://api.pocketutils.com/v1/down-check?url=https://example.com" \
  -H "Authorization: Bearer pu_live_9f2a1c7e4b3d8f0a6e5c1b2d3a4f5e6c"
```

```json theme={null}
{
  "success": true,
  "data": {
    "url": "https://example.com",
    "testedFrom": "India (Mumbai)",
    "httpsStatus": 200,
    "responseTimeMs": 214,
    "ipAddress": "93.184.216.34"
  }
}
```

## Base URL

Every endpoint is versioned and served from a dedicated API host:

```text theme={null}
https://api.pocketutils.com/v1
```

<Note>
  Calling from a browser on `pocketutils.com` itself? The website proxies these same routes at `/api/v1` on its own origin so tool pages never need CORS. Server-to-server integrations should call `api.pocketutils.com` directly.
</Note>

## Available APIs

<CardGroup cols={2}>
  <Card title="Screenshot" icon="camera" href="/api-reference/screenshot">
    Render a full-page PNG, WebP, or JPEG at any viewport. **2 credits**
  </Card>

  <Card title="URL to PDF" icon="file-pdf" href="/api-reference/url-to-pdf">
    Convert a live URL into a print-ready PDF document. **2 credits**
  </Card>

  <Card title="Broken Link Checker" icon="link-slash" href="/api-reference/broken-links">
    Crawl a site and return every dead link with its status. **2 credits**
  </Card>

  <Card title="Meta Scanner" icon="globe" href="/api-reference/meta-scan">
    Parse title, description, Open Graph, and Twitter Card tags. **1 credit**
  </Card>

  <Card title="SSL Scanner" icon="lock" href="/api-reference/ssl-scan">
    Inspect the certificate chain, cipher suite, and expiry window. **1 credit**
  </Card>

  <Card title="Down Checker" icon="server" href="/api-reference/down-check">
    Report reachability, HTTP status, latency, and resolved IP. **1 credit**
  </Card>

  <Card title="Link Extractor" icon="link" href="/api-reference/link-extract">
    Extract every link on a page or site, grouped by type. **1 credit**
  </Card>

  <Card title="XBEL Decryptor" icon="unlock" href="/api-reference/xbel-decrypt">
    Decrypt a protected XBEL bookmark archive to plain XML. **1 credit**
  </Card>

  <Card title="XBEL to HTML" icon="code" href="/api-reference/xbel-to-html">
    Convert an XBEL archive into browser-importable HTML. **1 credit**
  </Card>

  <Card title="Quota" icon="gauge" href="/api-reference/quota">
    Check the caller's current credit balance. **Free**
  </Card>
</CardGroup>

## How it works

<Steps>
  <Step title="Credits, not request counts">
    Every plan grants a pool of credits per billing cycle. A **light** endpoint — a fetch-and-parse lookup — costs 1 credit; a **render** endpoint — anything that boots headless Chromium or crawls more than one page — costs 2. A failed request is never billed: credits are only spent on a response that actually succeeds. See [Rate Limits & Credits](/rate-limits-and-credits).
  </Step>

  <Step title="One implementation, three callers">
    The same handler serves a signed-out visitor on a tool page (a small daily allowance), a signed-in user browsing the site (their monthly plan credits via session cookie), and a subscriber calling with an API key. Only the credential and the billing ledger differ — see [Authentication](/authentication).
  </Step>

  <Step title="Bot protection on the browser path only">
    Requests authenticated with an API key skip Cloudflare Turnstile entirely — a paying integration is assumed to be a machine, not a bot. Browser callers (session or anonymous) complete a Turnstile challenge, handled automatically on pocketutils.com.
  </Step>
</Steps>

## Next steps

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/quickstart">
    Make your first API call in under five minutes.
  </Card>

  <Card title="Authentication" icon="key" href="/authentication">
    Create an API key and learn the three ways to call the API.
  </Card>

  <Card title="Rate Limits & Credits" icon="gauge-high" href="/rate-limits-and-credits">
    Credit costs, plan limits, and the headers every response carries.
  </Card>

  <Card title="Errors" icon="triangle-exclamation" href="/errors">
    The error shape, status codes, and every error code you can get back.
  </Card>
</CardGroup>
