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

# Webhook Testing

Ephemeral test sessions, the inspector, custom responses, forwarding, and graduation.

Hookstream gives you a free, no-signup webhook testing tool at [hookstream.io/test](https://hookstream.io/test). Open the page, get a unique URL, and inspect every request in real-time. When you're ready, graduate the session to a full account without losing any data.

No account required. No credit card. No install. Open the page and you have a working webhook URL in under a second.

## Create a test session

**Open hookstream.io/test**

A session is auto-created on page load. You get:

    - A unique ingest URL: `https://hookstream.io/v1/ingest/src_<id>`
    - A two-panel inspector (events list on the left, event detail on the right)
    - 14-day TTL **or** 2,000 requests, whichever comes first
  **Point a provider at it**

Paste the ingest URL into any webhook provider, or hit it with curl:

    ```bash
    curl -X POST https://hookstream.io/v1/ingest/src_abc \
      -H "Content-Type: application/json" \
      -d '{"hello":"world"}'
    ```

    New events stream into the inspector via WebSocket — no refresh needed.
  **Inspect each request**

Click an event to see headers, pretty-printed JSON body, query parameters, source IP, and metadata. Hookstream also auto-detects common providers (Stripe, GitHub, Shopify, Clerk, Svix, etc.) and shows a provider badge so you know what you're looking at.

## Prefer the terminal? Use the CLI.

```bash test
hookstream test
```

```bash listen
hookstream listen
```

`test` creates a session and opens the inspector URL. `listen` creates a session and streams events into your terminal in real-time over WebSocket — headers, body, status, the lot.

## Customize the response

By default the ingest URL returns `200 OK`. You can override that per session to simulate odd behavior (5xx, redirects, custom bodies):

```bash
curl -X PATCH https://hookstream.io/v1/test/sessions/sess_abc/response \
  -H "Content-Type: application/json" \
  -d '{
    "status_code": 201,
    "headers": { "X-Custom": "value" },
    "body": "{\"ok\": true}"
  }'
```

## Forward to localhost (or anywhere)

Tunnel your live test session to your dev server without setting up ngrok:

**Expose your local endpoint**

Use ngrok, Cloudflare Tunnel, or a local URL your laptop can reach from the internet.
  **Enable forwarding on the session**

```bash
    curl -X PATCH https://hookstream.io/v1/test/sessions/sess_abc/forwarding \
      -H "Content-Type: application/json" \
      -d '{
        "url": "https://your-ngrok-url.ngrok.io/webhook",
        "enabled": true
      }'
    ```

    Forwarding runs via `waitUntil`, so it never blocks the provider's response — hookstream replies instantly and forwards in the background. The forwarding response shows up in the event detail so you can see what your server said.

## Everything else you can do

- **Search and filter** across received events.
- **Copy as code** — hookstream generates ready-to-paste snippets in cURL, JavaScript, Python, and Go for any captured request.
- **Add notes** to events (`PUT /v1/test/sessions/:id/events/:eid/note`) — handy for documenting what each test was for.
- **Export** as NDJSON or CSV: `GET /v1/test/sessions/:id/export?format=ndjson`.
- **Configure a custom response body** to simulate provider-side quirks.

## Graduate to your account

Sign up and hookstream offers to "graduate" your test session: the ingest URL stays exactly the same, but the source and all its events move into your org with full pipeline support — destinations, retries, alerts, collections, everything.

```bash
curl -X POST https://hookstream.io/v1/test/sessions/sess_abc/claim \
  -H "X-API-Key: $HOOKSTREAM_API_KEY"
```

You don't need to update anything on the provider side — the URL keeps working.

## Next Steps

**[Test Sessions API](/api/test-sessions)**

Full endpoints for sessions, responses, forwarding, and export.
  **[Real-Time Streaming](/guides/real-time-streaming)**

The same WebSocket infrastructure used by the inspector.