# Absence webhooks

Receive webhook notifications whenever absences are created, updated, deleted or requests are approved. Absence webhooks can be used to trigger actions in your application whenever an absence is changed, for example to keep an external HR or scheduling system up to date.

## Events[​](#events "Direct link to Events")

| Event             | Description                                                                           |
| ----------------- | ------------------------------------------------------------------------------------- |
| `absence.created` | Occurs whenever an absence is created directly or an absence request is approved.     |
| `absence.updated` | Occurs whenever any absence's information is updated.                                 |
| `absence.deleted` | Occurs whenever an absence is deleted directly or a cancellation request is approved. |

## Example Payload[​](#example-payload "Direct link to Example Payload")

We return JSON-formatted content with the following structure.

| Name    | Example content                                                                        | Description                                                |
| ------- | -------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| `type`  | `absence`                                                                              | Resource type                                              |
| `event` | `absence.created`                                                                      | Event that triggered the webhook, lowercase, dot-separated |
| `url`   | `https://app.freispace.com/staffs/a247dce0-6215-4ca4-bc1c-42a69a078d85/presences/2026` | URL to the time tracking overview of the staff member      |
| `data`  | `{}`                                                                                   | The absence block information                              |

```
{

    "type": "absence",

    "event": "absence.created",

    "url": "https://app.freispace.com/staffs/a247dce0-6215-4ca4-bc1c-42a69a078d85/presences/2026",

    "data": {

        "staff_id": "a247dce0-6215-4ca4-bc1c-42a69a078d85",

        "absence_type_id": "a247dcde-dbe2-4bae-af3f-b24725d9cf3c", // null if the absence is a holiday/vacation

        "start": "2026-08-06", // First day of the absence block

        "end": "2026-08-06", // Last day of the absence (inclusive)

        "length": 1, // Total length in days

        "is_holiday": false, // Whether the absence is a holiday/vacation

        "comment": null,

        "status": "approved",

        "days": [ // Per-day breakdown of the absence block

            {

                "id": "a24800a6-584c-425c-9ac1-d6bb3d70d0c4",

                "date": "2026-08-06",

                "is_half_day": false,

                "half_day_daytime": null, // "morning" or "afternoon" if this is a half-day absence

                "length": 1 // 0.5 for half-day absences, 1 for full-day absences

            }

        ],

        "created": "2026-07-17T15:15:22+00:00",

        "updated": "2026-07-17T15:15:22+00:00"

    }

}
```

info

`start`, `end` and the entries in `days` are calendar dates without a time component. The `created` and `updated` timestamps are in UTC.
