Webhooks | Daytona

Webhooks

Webhooks are HTTP callbacks that Daytona sends to your specified endpoints when specific events occur. Think of them as “reverse API calls” - instead of your application asking Daytona for updates, Daytona proactively notifies your application when something important happens.

Webhooks enable powerful automation and integration scenarios:

Webhooks are available to all members of an organization. If you don’t see Webhooks in Daytona Dashboard ↗, contact support@daytona.io to enable webhooks for your organization.

Accessing webhooks

Daytona provides a webhook management interface to access and manage webhook endpoints.

  1. Navigate to Daytona Dashboard ↗
  2. Click Webhooks in the sidebar

The webhooks management interface contains two tabs: Endpoints and Messages.

Endpoints

The endpoints tab lists all the webhook endpoints for the organization. Each endpoint has the following details:

Clicking on an endpoint opens the endpoint details page with additional endpoint configuration details: name, URL, events, status, delivery statistics, and event history.

Messages

The messages tab lists all the webhook messages for the organization. Each message has the following details:

Clicking on a message opens the message details dialog with additional message details: message ID, event type, timestamp, payload, and delivery attempts.

Delivery attempts are shown in a separate table with the following columns:

Expanding a delivery attempt displays additional delivery attempt details: status code, duration, trigger, endpoint ID, and response body.

Create webhook endpoints

Daytona provides a webhook management interface to create webhook endpoints.

  1. Navigate to Daytona Dashboard ↗
  2. Click Webhooks in the sidebar
  3. Click Add Endpoint
  4. Configure your endpoint:
  1. Click Create

Edit webhook endpoints

Daytona provides a webhook management interface to edit webhook endpoints.

  1. Navigate to Daytona Dashboard ↗
  2. Click Webhooks in the sidebar
  3. Select a webhook endpoint from the Endpoints tab
  4. Click the three dots menu ( ⋮) and select Edit
  5. Update the endpoint details
  6. Click Save

Delete webhook endpoints

Daytona provides a webhook management interface to delete webhook endpoints.

  1. Navigate to Daytona Dashboard ↗
  2. Click Webhooks in the sidebar
  3. Select a webhook endpoint from the Endpoints tab
  4. Click the three dots menu ( ⋮) and select Delete
  5. Confirm the deletion

Webhook events

Daytona sends webhooks for lifecycle events across your infrastructure resources. You can subscribe to specific event types or receive all events and filter them in your application.

Sandbox events

Event Type Description
sandbox.created A new sandbox has been created
sandbox.state.updated A sandbox’s state has changed

Snapshot events

Event Type Description
snapshot.created A new snapshot has been created
snapshot.state.updated A snapshot’s state has changed
snapshot.removed A snapshot has been removed

Volume events

Event Type Description
volume.created A new volume has been created
volume.state.updated A volume’s state has changed

Webhook payload format

All webhook payloads are JSON objects following a consistent format with common fields and event-specific data.

Common Fields:

| Field | Type | Description | | --- | --- | | event | string | Event type identifier (e.g., sandbox.created) | | timestamp | string | ISO 8601 timestamp when the event occurred |

sandbox.created

Sent when a new sandbox is created.

{

"event": "sandbox.created",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "sandbox123",

"organizationId": "org123",

"state": "started",

"sandboxClass": "container",

"createdAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Sandbox ID | | organizationId | string | Organization ID | | state | string | Sandbox state | | sandboxClass | string | Sandbox class | | createdAt | string | ISO 8601 timestamp when the sandbox was created |

sandbox.state.updated

Sent when a sandbox’s state changes.

{

"event": "sandbox.state.updated",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "sandbox123",

"organizationId": "org123",

"oldState": "started",

"newState": "stopped",

"updatedAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Sandbox ID | | organizationId | string | Organization ID | | oldState | string | Previous sandbox state | | newState | string | New sandbox state | | updatedAt | string | ISO 8601 timestamp when the sandbox was last updated |

snapshot.created

Sent when a new snapshot is created.

{

"event": "snapshot.created",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "snapshot123",

"name": "my-snapshot",

"organizationId": "org123",

"state": "active",

"createdAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Snapshot ID | | name | string | Snapshot name | | organizationId | string | Organization ID | | state | string | Snapshot state | | createdAt | string | ISO 8601 timestamp when the snapshot was created |

snapshot.state.updated

Sent when a snapshot’s state changes.

{

"event": "snapshot.state.updated",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "snapshot123",

"name": "my-snapshot",

"organizationId": "org123",

"oldState": "building",

"newState": "active",

"updatedAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Snapshot ID | | name | string | Snapshot name | | organizationId | string | Organization ID | | oldState | string | Previous snapshot state | | newState | string | New snapshot state | | updatedAt | string | ISO 8601 timestamp when the snapshot was last updated |

snapshot.removed

Sent when a snapshot is removed.

{

"event": "snapshot.removed",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "snapshot123",

"name": "my-snapshot",

"organizationId": "org123",

"removedAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Snapshot ID | | name | string | Snapshot name | | organizationId | string | Organization ID | | removedAt | string | ISO 8601 timestamp when the snapshot was removed |

volume.created

Sent when a new volume is created.

{

"event": "volume.created",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "vol-12345678",

"name": "my-volume",

"organizationId": "org123",

"state": "ready",

"createdAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Volume ID | | name | string | Volume name | | organizationId | string | Organization ID | | state | string | Volume state | | createdAt | string | ISO 8601 timestamp when the volume was created |

volume.state.updated

Sent when a volume’s state changes.

{

"event": "volume.state.updated",

"timestamp": "2025-12-19T10:30:00.000Z",

"id": "vol-12345678",

"name": "my-volume",

"organizationId": "org123",

"oldState": "creating",

"newState": "ready",

"updatedAt": "2025-12-19T10:30:00.000Z"

}

| Field | Type | Description | | --- | --- | | id | string | Volume ID | | name | string | Volume name | | organizationId | string | Organization ID | | oldState | string | Previous volume state | | newState | string | New volume state | | updatedAt | string | ISO 8601 timestamp when the volume was last updated |