# Inspect

[Hookdeck Inspect](https://inspect.hookdeck.com) gives you a webhook test URL, called a **Source URL**, that you can hand to any service, so you can read exactly what it sent. It needs no account.

Use it to:

* **Read a payload** before you write code against it: its headers and its exact body.
* **Send a test webhook** from the [Webhook Library](/docs/inspect/webhooks-library) instead of triggering a real one, so you don't have to send yourself an SMS to see a `message.received`.
* **Forward requests to localhost** with the [Hookdeck CLI](/docs/cli), or to any HTTP endpoint, and read the response your handler returned.
* **Retry a captured request** while you iterate, instead of waiting for the provider to send another.
* **Share the URL** with a colleague so you can both watch the same requests arrive.
* **Create Source URLs and wait for requests over HTTP** with the [Inspect API](/docs/inspect/api), so a test or an AI agent can create a URL, send to it, and read what arrived.

## Source URLs

A Source URL is where webhooks go, and each one has its own page where you read them:

* The **Source URL** (`inspect.hookdeck.com/e/<id>`) receives requests. Give it to the service sending them.
* Its **page** (`inspect.hookdeck.com/<id>`) is where you read them.

Create as many as you need and switch between them from the sidebar: one per provider you're testing, or one per integration you're building.

## Quickstart

1. Open [inspect.hookdeck.com](https://inspect.hookdeck.com). A Source URL is created for you and shown under **Paste to webhook provider**.
2. Copy it with the copy button beside it.
3. Send it a request:
  
  
  ```bash
  curl -X POST "https://inspect.hookdeck.com/e/<your-id>" \
    -H "Content-Type: application/json" \
    -d '{"hello":"world"}'
  
  ```
  
  
4. The page switches to the request list and opens the request, with its headers and body.

From there you can [send a test webhook](/docs/inspect/webhooks-library) instead of writing your own, or [forward requests](/docs/inspect/destinations) to a URL or to your localhost.

Testing a specific platform? Open its page, such as [inspect.hookdeck.com/webhooks/stripe](https://inspect.hookdeck.com/webhooks/stripe). It sets up a Source URL of that [type](/docs/inspect/sources#setting-a-source-type) and shows that platform's sample webhooks.

## Creating Source URLs with the API

Source URLs can be created and read with the [Inspect API](/docs/inspect/api), over plain HTTP with no account and no API key. One `POST` returns a new one:

```bash
curl -sS -X POST "https://inspect.hookdeck.com/"

```

The reply has the Source URL as `ingest_url`, its page as `inspect_url`, and a `requests_url`. A `GET` to `requests_url` waits up to 25 seconds for the next request and returns it as JSON, so there's no need to poll. That makes a test URL something a test or an AI agent can create, send to, and read back.

To set a [Source Type](/docs/inspect/sources#setting-a-source-type), send it as JSON: `-H "Content-Type: application/json" -d '{"type":"STRIPE"}'`.

See the [Inspect API reference](/docs/inspect/api) for the full contract.

## Using Inspect with AI agents

An agent can do everything above with plain HTTP calls. To teach yours how, install the Inspect skill:

In the app, **Get started with your agent** on the home page copies a prompt that hands your agent a Source URL to work with, and **Share with agent** copies the open request for your agent to read, with sensitive headers removed. Agents can also read [inspect.hookdeck.com/llms.txt](https://inspect.hookdeck.com/llms.txt).

## Retention and Hookdeck accounts

Without an account, your Source URLs are kept together by your browser's session, which lasts 90 days. Captured requests are kept for 3 days.

Choosing **Save Data** creates a free Hookdeck account. Your Source URLs carry over with their requests, and you can reach them from any device.

See [retention and Hookdeck accounts](/docs/inspect/sources#retention-and-hookdeck-accounts) for details.