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

# Get Webhook

> Retrieve a single webhook subscription and its recent delivery logs.

Requires an API key with `read_only` or `full_access` scope.

Returns the webhook details along with a paginated list of recent delivery logs.

## Path parameters

<ParamField path="webhookId" type="string" required>
  The unique identifier of the webhook.
</ParamField>

## Query parameters

<ParamField query="cursor" type="string">
  Pagination cursor for delivery logs. Omit for the first page.
</ParamField>

## Response

<ResponseField name="webhook" type="object">
  <Expandable title="webhook object">
    <ResponseField name="id" type="string">
      Webhook ID.
    </ResponseField>

    <ResponseField name="name" type="string">
      Webhook name.
    </ResponseField>

    <ResponseField name="url" type="string">
      The HTTPS endpoint that receives webhook deliveries.
    </ResponseField>

    <ResponseField name="event_types" type="string[]">
      List of event types this webhook is subscribed to.
    </ResponseField>

    <ResponseField name="status" type="string">
      Webhook status. Either `active` or `paused`.
    </ResponseField>

    <ResponseField name="failure_count" type="number">
      Number of consecutive delivery failures.
    </ResponseField>

    <ResponseField name="created" type="number">
      Unix timestamp (milliseconds) when the webhook was created.
    </ResponseField>

    <ResponseField name="updated" type="number">
      Unix timestamp (milliseconds) when the webhook was last updated.
    </ResponseField>

    <ResponseField name="created_by" type="object | null">
      The user or API key that created the webhook.

      <Expandable title="properties">
        <ResponseField name="id" type="string">
          User ID or API key ID.
        </ResponseField>

        <ResponseField name="email" type="string | null">
          User email. `null` for API key-created webhooks.
        </ResponseField>

        <ResponseField name="first_name" type="string | null">
          First name, or API key name for API key-created webhooks.
        </ResponseField>

        <ResponseField name="last_name" type="string | null">
          Last name. `null` for API key-created webhooks.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="last_triggered_at" type="number | null">
      Unix timestamp (milliseconds) of the last delivery attempt.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="logs" type="object[]">
  Recent delivery log entries, sorted newest first.

  <Expandable title="log object">
    <ResponseField name="id" type="string">
      Delivery log ID.
    </ResponseField>

    <ResponseField name="event_type" type="string">
      The event type that triggered this delivery.
    </ResponseField>

    <ResponseField name="url" type="string">
      The URL the delivery was sent to.
    </ResponseField>

    <ResponseField name="status" type="string">
      Delivery status. Either `success` or `failed`.
    </ResponseField>

    <ResponseField name="response_status" type="number | null">
      HTTP response status code from the target, or `null` if the request failed.
    </ResponseField>

    <ResponseField name="response_body" type="string | null">
      First 1024 characters of the response body.
    </ResponseField>

    <ResponseField name="request_payload" type="string | null">
      The JSON payload that was sent.
    </ResponseField>

    <ResponseField name="duration_ms" type="number">
      Delivery duration in milliseconds.
    </ResponseField>

    <ResponseField name="error_message" type="string | null">
      Error message if the delivery failed.
    </ResponseField>

    <ResponseField name="created" type="number">
      Unix timestamp (milliseconds) when the delivery was attempted.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="log_count" type="number">
  Number of delivery logs in the current page.
</ResponseField>

<ResponseField name="cursor" type="string | null">
  Cursor for the next page of logs. `null` when there are no more results.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET https://api.dronebundle.com/v1/webhooks/019d5221-b413-71a9-a56b-f70bc91efe63 \
    -H "Authorization: Bearer v1_your_api_key_here"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "webhook": {
      "id": "019d5221-b413-71a9-a56b-f70bc91efe63",
      "name": "Project notifications",
      "url": "https://hooks.example.com/dronebundle",
      "event_types": ["project.created", "project.updated"],
      "status": "active",
      "failure_count": 0,
      "created": 1743400000000,
      "updated": 1743400000000,
      "created_by": {
        "id": "user-abc-123",
        "email": "sarah@example.com",
        "first_name": "Sarah",
        "last_name": "Chen"
      },
      "last_triggered_at": 1743500000000
    },
    "logs": [
      {
        "id": "019d5300-a1b2-7000-8000-abc123def456",
        "event_type": "project.created",
        "url": "https://hooks.example.com/dronebundle",
        "status": "success",
        "response_status": 200,
        "response_body": "{\"ok\":true}",
        "request_payload": "{\"delivery_id\":\"...\",\"event\":\"project.created\",\"timestamp\":1743500000000,\"workspace_id\":\"...\",\"data\":{...}}",
        "duration_ms": 245,
        "error_message": null,
        "created": 1743500000000
      }
    ],
    "log_count": 1,
    "cursor": null
  }
  ```
</ResponseExample>

## Errors

**404 Not Found** - Webhook not found.

```json theme={null}
{
  "message": "Webhook not found"
}
```
