Files

71 lines
2.5 KiB
Markdown
Raw Permalink Normal View History

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
```
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
| 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
## 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
Most error responses follow this shape:
2026-06-17 09:10:00 +02:00
```json
{ "error": "Human-readable message" }
```
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:
| 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 |
::: 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.
:::