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

# Endpoints API

> Create and manage your webhook capture URLs

An endpoint is a unique URL that captures incoming webhook events. Each endpoint has a `public_token` that you use to build its capture URL:

```
https://hookdrop.dev/in/{public_token}
```

Point any webhook source at this URL and Hookdrop will capture the request for inspection and forwarding.

***

## List endpoints

Returns all endpoints belonging to your account, ordered by creation date (newest first).

```bash theme={null}
curl https://hookdrop.dev/api/endpoints \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

**Response**

```json theme={null}
{
  "endpoints": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "user_id": "3f6e2a91-bd14-4c3a-9c71-8e2d1f0a4b56",
      "name": "Stripe payments",
      "public_token": "4f9e1c2a8b3d7e5f",
      "is_active": true,
      "metadata": {},
      "created_at": "2026-04-01T10:00:00.000Z"
    }
  ]
}
```

<ResponseField name="endpoints" type="array" required>
  List of endpoint objects.

  <Expandable title="endpoint properties">
    <ResponseField name="id" type="string">
      Unique identifier for the endpoint.
    </ResponseField>

    <ResponseField name="user_id" type="string">
      ID of the owning user.
    </ResponseField>

    <ResponseField name="name" type="string">
      Human-readable name you assigned to this endpoint.
    </ResponseField>

    <ResponseField name="public_token" type="string">
      Token used to build the capture URL: `https://hookdrop.dev/in/{public_token}`.
    </ResponseField>

    <ResponseField name="is_active" type="boolean">
      Whether the endpoint is accepting incoming webhooks.
    </ResponseField>

    <ResponseField name="metadata" type="object">
      Arbitrary key-value metadata attached to the endpoint.
    </ResponseField>

    <ResponseField name="created_at" type="string">
      ISO 8601 timestamp of when the endpoint was created.
    </ResponseField>
  </Expandable>
</ResponseField>

***

## Create an endpoint

Creates a new endpoint and returns its capture URL token.

```bash theme={null}
curl -X POST https://hookdrop.dev/api/endpoints \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Stripe payments"}'
```

**Request body**

<ParamField body="name" type="string" required>
  A human-readable label for this endpoint (e.g. `"Stripe payments"`).
</ParamField>

**Response**

```json theme={null}
{
  "endpoint": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "user_id": "3f6e2a91-bd14-4c3a-9c71-8e2d1f0a4b56",
    "name": "Stripe payments",
    "public_token": "4f9e1c2a8b3d7e5f",
    "is_active": true,
    "metadata": {},
    "created_at": "2026-04-01T10:00:00.000Z"
  }
}
```

Your capture URL is:

```
https://hookdrop.dev/in/4f9e1c2a8b3d7e5f
```

***

## Get an endpoint

Returns a single endpoint including its associated destinations.

```bash theme={null}
curl https://hookdrop.dev/api/endpoints/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

**Path parameters**

<ParamField path="id" type="string" required>
  The endpoint ID.
</ParamField>

**Response**

```json theme={null}
{
  "endpoint": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Stripe payments",
    "public_token": "4f9e1c2a8b3d7e5f",
    "is_active": true,
    "metadata": {},
    "created_at": "2026-04-01T10:00:00.000Z",
    "destinations": []
  }
}
```

***

## Update an endpoint

Updates the name or active status of an endpoint. Only the fields you include are changed.

```bash theme={null}
curl -X PATCH https://hookdrop.dev/api/endpoints/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Stripe production", "is_active": false}'
```

**Path parameters**

<ParamField path="id" type="string" required>
  The endpoint ID.
</ParamField>

**Request body**

<ParamField body="name" type="string">
  New display name for the endpoint.
</ParamField>

<ParamField body="is_active" type="boolean">
  Set to `false` to stop the endpoint from accepting new webhooks.
</ParamField>

<ParamField body="metadata" type="object">
  Arbitrary key-value pairs you can attach to the endpoint for your own reference.
</ParamField>

**Response**

```json theme={null}
{
  "endpoint": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "name": "Stripe production",
    "public_token": "4f9e1c2a8b3d7e5f",
    "is_active": false,
    "metadata": {},
    "created_at": "2026-04-01T10:00:00.000Z"
  }
}
```

***

## Delete an endpoint

Permanently deletes an endpoint and all its associated events and destinations.

```bash theme={null}
curl -X DELETE https://hookdrop.dev/api/endpoints/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

**Path parameters**

<ParamField path="id" type="string" required>
  The endpoint ID.
</ParamField>

**Response**

```json theme={null}
{
  "ok": true
}
```
