# POST /scheduling-bookings/available-slots

**Resource:** [Scheduling Bookings](./scheduling-bookings.md)  
**Scopes:** `company:read`  
**Write operation:** no

Get all available time slots for a date range. Returns slots grouped by date with human-readable formatting. Integrates with Google Calendar freebusy to block busy times.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `event_type_id` | body | string | no | Event type UUID (or slug/name) |
| `event_type_slug` | body | string | no | Event type slug |
| `event_type_name` | body | string | no | Event type name |
| `date_from` | body | string | no | Start date YYYY-MM-DD. Default: today. |
| `date_to` | body | string | no | End date YYYY-MM-DD. Default: 14 days from date_from. Max 30 days. |
| `timezone` | body | string | no | Timezone. Default: Australia/Sydney. Auto-resolves abbreviations. |

## Request example

```bash
curl -X POST \
  "https://api.trustpager.com/functions/v1/api/v1/scheduling-bookings/available-slots" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type_slug": "30-minute-booking",
    "date_from": "2026-04-01",
    "date_to": "2026-04-03"
  }'
```

## Response example

```json
{
  "data": {
    "success": true,
    "event_type": { "id": "...", "name": "30 Minute Booking", "duration_minutes": 30 },
    "availability": {
      "timezone": "Australia/Sydney",
      "total_available_slots": 12,
      "next_available": { "date": "2026-04-01", "time": "09:00", "formatted": "..." },
      "dates": [
        {
          "date": "2026-04-01",
          "day_name": "Wednesday",
          "formatted": "Wednesday, 1 April 2026",
          "slots": [
            { "time": "09:00", "formatted": "9:00 AM" },
            { "time": "09:30", "formatted": "9:30 AM" }
          ]
        }
      ]
    }
  }
}
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`