2026-06-17 09:10:00 +02:00
---
title : API Overview
description : Base URL, content types, and response conventions.
---
# API Overview
## Base URL
```
http://localhost:8191
```
2026-07-05 18:06:12 +02:00
Or wherever you've mapped `PORT` (default `8191` ).
2026-06-17 09:10:00 +02:00
## Authentication
TRAWL has no authentication — all endpoints are open. Run it on a private network or behind a firewall if you need access control.
## Content type
All request and response bodies are JSON:
```http
Content-Type: application/json
```
## Endpoints
2026-07-11 17:00:29 +02:00
| Method | Path | Description |
| ------ | --------- | ----------------------------- |
| `GET` | `/health` | Pool status and uptime |
| `GET` | `/stats` | Public numbers for dashboards |
| `POST` | `/v1` | FlareSolverr v2 compatible |
| `POST` | `/scrape` | Native TRAWL API |
2026-06-17 09:10:00 +02:00
2026-08-02 02:35:35 +02:00
## Forward proxy
When `MITM_PROXY_ENABLED=true` , TRAWL also listens as an HTTP/HTTPS forward proxy on
`MITM_PROXY_PORT` (default `8192` ). This is a socket-level proxy interface rather than a JSON API
endpoint. It forwards normal traffic directly and escalates recognized challenge walls through the
same tier engine as `/scrape` .
HTTPS clients must trust the generated TRAWL CA. Start with the
[proxy overview ](/proxy/overview ), then follow [client setup ](/proxy/client-setup ) and
[CA installation ](/proxy/ca-installation ).
2026-06-17 09:10:00 +02:00
## Error responses
2026-06-30 00:22:57 +02:00
Most error responses follow this shape:
2026-06-17 09:10:00 +02:00
```json
{ "error" : "Human-readable message" }
```
2026-06-30 00:22:57 +02:00
Pool-exhaustion errors are an exception — they return a FlareSolverr v2 envelope so `/v1` and `/scrape` produce identical bodies on saturation. See [FlareSolverr compat → Error response ](/api-reference/flaresolvr-compat#error-response ) for the envelope shape.
2026-06-17 09:10:00 +02:00
HTTP status codes:
2026-07-11 17:00:29 +02:00
| Code | Meaning |
| ---- | -------------------------------------------------------------------- |
| 200 | Success |
| 400 | Bad request (missing/invalid fields) |
| 429 | Pool exhausted — all browsers busy past `BROWSER_ACQUIRE_TIMEOUT_MS` |
| 503 | Browser pool initializing |
| 500 | Internal error |
2026-06-30 00:22:57 +02:00
::: info CORS
The API does **not** emit `Access-Control-Allow-Origin` headers. TRAWL is designed for direct, same-network access (e.g. Prowlarr/Jackett, internal services, your reverse proxy). If you need browser-based cross-origin access, terminate at a proxy that adds the CORS headers you need.
:::