# Regions and data residency

The regional base URLs you can send requests to, which plans reach which regions, and what it means for processing to stay in one.

Every PDF Blocks action runs in the region you address. Pick a base URL and your
document is processed there and nowhere else. Choosing a region is as simple as
swapping the host in the URL. Every region runs the full catalog of 17 actions,
with the same uptime.

## Regional endpoints

Send your request to the base URL for the region you want to process in.

| Region         | Base URL                          |
| -------------- | --------------------------------- |
| Global         | `https://api.pdfblocks.com`       |
| United States  | `https://us.api.pdfblocks.com`    |
| US HIPAA       | `https://hipaa.api.pdfblocks.com` |
| European Union | `https://eu.api.pdfblocks.com`    |
| United Kingdom | `https://uk.api.pdfblocks.com`    |
| Canada         | `https://ca.api.pdfblocks.com`    |
| Australia      | `https://au.api.pdfblocks.com`    |
| Japan          | `https://jp.api.pdfblocks.com`    |
| India          | `https://in.api.pdfblocks.com`    |
| Brazil         | `https://br.api.pdfblocks.com`    |

Every region above is live, serves the complete action catalog, and is backed by
the same uptime commitment. The **Global** endpoint routes each request to nearby
infrastructure for the lowest latency; the named regional endpoints pin
processing to a specific jurisdiction.

## Region availability by plan

Which regions you can address depends on your plan:

- **Free**: Global.
- **Starter**: Global, US, and Europe.
- **Business**: every region above.

See [pricing](/pricing) for the full breakdown.

## What "processing stays in region" means

A request sent to a regional base URL is processed entirely within that region.
Your upload is received, transformed, and returned by infrastructure in that
jurisdiction. It does not travel elsewhere to be processed.

Because the API is **stateless**, there is nothing to store: your document exists
only in memory for the lifetime of the request. Once the response is streamed
back, the input and output are gone; there is no bucket, database, or queue that
retains your files after the call completes. Data residency therefore comes down
to a single decision: which host you send the request to.

## The US HIPAA endpoint

`https://hipaa.api.pdfblocks.com` is a United States endpoint operated for
workflows that handle protected health information (PHI) under HIPAA. Route
requests here when your compliance program requires PDF processing to run in a
HIPAA-aligned environment. Like every region, it is stateless and runs the full
action catalog.

## Choosing a region

Pick the region that matches where your data is allowed to be processed:

- **Global**: the default. Best latency, no residency constraint.
- **European Union** (`eu.`): keep processing within the EU for GDPR and other
  EU data-residency requirements.
- **United Kingdom** (`uk.`): keep processing within the UK.
- **United States** (`us.`) and **US HIPAA** (`hipaa.`): process in the US, with
  the HIPAA endpoint for PHI workflows.
- **Canada** (`ca.`), **Australia** (`au.`), **Japan** (`jp.`),
  **India** (`in.`), and **Brazil** (`br.`): process within that country to
  satisfy local data-residency rules.

If your requirement is simply "keep this in region X," send every request to that
region's host and you are done.

## Switching regions

Switching regions is a one-line change: keep the path, the parameters, and your
API key exactly the same, and change only the host. The example below runs
[Add a text watermark](/docs/api/add-text-watermark-to-pdf) in the EU instead of
Global.

```bash title="cURL"
# Global
curl https://api.pdfblocks.com/v1/add_text_watermark \
  -H 'X-API-Key: your_api_key' \
  -F file=@input.pdf \
  -F line_1='CONFIDENTIAL' \
  -o watermarked.pdf

# European Union: same request, EU host
curl https://eu.api.pdfblocks.com/v1/add_text_watermark \
  -H 'X-API-Key: your_api_key' \
  -F file=@input.pdf \
  -F line_1='CONFIDENTIAL' \
  -o watermarked.pdf
```

Your [API key](/docs/api/authentication) works on every region. There are no
per-region keys to manage. See
[Requests and responses](/docs/api/requests-and-responses) for the shape every
call shares.
