PlanDocket

Webhooks

Business+

Configure webhook endpoints.

Required scopes: webhooks
Feature flag: webhooks

Endpoints

GET /api/v1/webhooks

List all webhooks

GET /api/v1/webhooks/{id}

Retrieve a single webhook

POST /api/v1/webhooks

Create a new webhook

DELETE /api/v1/webhooks/{id}

Delete a webhook

GET /api/v1/webhooks/events

List available event types

Request Schema

Parameter Type Required Description
url string Yes Webhook endpoint URL (HTTPS required)
events array Yes Array of event types to subscribe to
name string No Display name for the webhook
is_active boolean No Whether the webhook is active
headers object No Custom HTTP headers to send with webhook requests
retry_count integer No Number of retry attempts on failure (default: 3)
timeout_seconds integer No Request timeout in seconds (default: 30)

Response Schema

Field Type
id integer
name string
url string
events array
is_active boolean
retry_count integer
timeout_seconds integer
last_triggered_at string|null
last_success_at string|null
last_failure_at string|null
failure_count integer
secret string (create/show only)
created_at string

Code Examples

curl -X GET "https://your-tenant.plandocket.com/api/v1/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
<?php
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://your-tenant.plandocket.com';

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $baseUrl . '/api/v1/webhooks',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
]);

$response = curl_exec($ch);
$data = json_decode($response, true);
curl_close($ch);

print_r($data);
const apiKey = 'YOUR_API_KEY';
const baseUrl = 'https://your-tenant.plandocket.com';

const response = await fetch(`${baseUrl}/api/v1/webhooks`, {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
import requests

api_key = 'YOUR_API_KEY'
base_url = 'https://your-tenant.plandocket.com'

headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json',
}

response = requests.get(f'{base_url}/api/v1/webhooks', headers=headers)
data = response.json()
print(data)

Sample Response

200 OK
{
  "data": {
    "webhook_id": 1,
    "created_at": 1704067200,
    "updated_at": 1704067200
  },
  "meta": {
    "request_id": "req_abc123"
  }
}
Esc to close