Install
openclaw skills install toolweb-schedulyA scheduling and booking management platform with Google Calendar integration, event type management, availability rules, and time slot booking capabilities.
openclaw skills install toolweb-schedulyScheduly is a comprehensive scheduling API that enables users to create custom event types, manage availability, and handle bookings with built-in Google Calendar synchronization. The platform is designed for professionals and teams who need to streamline their scheduling workflows with flexible availability rules, blocked date management, and automatic renewal capabilities.
Key capabilities include event type creation and management with monthly renewal (500 coins per creation), granular availability scheduling by day and time, public booking pages for guests, and complete booking lifecycle management. Users can connect their Google Calendar accounts, set timezone preferences, and automate renewal processes to ensure continuous availability.
Ideal users include freelancers, consultants, coaches, therapists, and any service provider who needs to offer time slots to clients while maintaining control over their availability and managing calendar integrations seamlessly.
{
"name": "30-Minute Consultation",
"description": "One-on-one consultation session",
"duration_minutes": 30,
"color": "#3b82f6"
}
Request:
curl -X POST https://api.toolweb.in/tools/scheduly/event-types \
-H "Content-Type: application/json" \
-d '{
"name": "30-Minute Consultation",
"description": "One-on-one consultation session",
"duration_minutes": 30,
"color": "#3b82f6"
}' \
-G --data-urlencode "user_id=user123"
Response:
{
"id": 1,
"user_id": "user123",
"name": "30-Minute Consultation",
"slug": "30-minute-consultation",
"description": "One-on-one consultation session",
"duration_minutes": 30,
"color": "#3b82f6",
"created_at": "2024-01-15T10:30:00Z",
"expires_at": "2024-02-15T10:30:00Z",
"is_expired": false,
"in_grace_period": false,
"auto_renewal_enabled": false
}
{
"event_type_slug": "30-minute-consultation",
"guest_name": "John Doe",
"guest_email": "john@example.com",
"start_time": "2024-01-20T14:00:00Z",
"timezone": "America/New_York",
"notes": "Please call 5 minutes before the meeting"
}
Request:
curl -X POST https://api.toolweb.in/tools/scheduly/bookings \
-H "Content-Type: application/json" \
-d '{
"event_type_slug": "30-minute-consultation",
"guest_name": "John Doe",
"guest_email": "john@example.com",
"start_time": "2024-01-20T14:00:00Z",
"timezone": "America/New_York",
"notes": "Please call 5 minutes before the meeting"
}'
Response:
{
"id": "booking-001",
"event_type_id": 1,
"event_type_name": "30-Minute Consultation",
"guest_name": "John Doe",
"guest_email": "john@example.com",
"start_time": "2024-01-20T14:00:00Z",
"end_time": "2024-01-20T14:30:00Z",
"timezone": "America/New_York",
"notes": "Please call 5 minutes before the meeting",
"created_at": "2024-01-15T11:00:00Z",
"status": "confirmed"
}
GET /Read root endpoint. Returns basic service information.
Parameters: None
Response: Service metadata and status.
GET /healthHealth check endpoint. Verify API is running and operational.
Parameters: None
Response: Health status confirmation.
GET /google/loginInitiate Google OAuth flow for calendar integration.
Parameters:
user_id (string, required): Unique user identifierResponse: OAuth authorization URL and session state.
GET /google/callbackHandle Google OAuth callback after user authorization.
Parameters:
code (string, required): Authorization code from Googlestate (string, required): State parameter for CSRF protectionResponse: User profile and calendar connection confirmation.
POST /user/disconnect-googleDisconnect Google Calendar account and revoke tokens.
Parameters:
user_id (string, required): Unique user identifierResponse: Confirmation of disconnection.
POST /event-typesCreate a new event type. Costs 500 coins and is valid for 1 month.
Parameters:
user_id (string, required): Unique user identifierRequest Body:
name (string, required): Event type namedescription (string, optional): Event descriptionduration_minutes (integer, required): Duration in minutescolor (string, optional, default: #3b82f6): Hex color code for UI displayResponse: Created event type with slug, expiry date, and renewal status.
GET /event-typesGet all event types for a user with expiry status, grace period, and auto-renewal info.
Parameters:
user_id (string, required): Unique user identifierResponse: Array of event types with:
id: Event type IDname: Event type nameslug: URL-friendly identifierduration_minutes: Booking durationis_expired: Boolean indicating expiry statusin_grace_period: Boolean indicating grace periodauto_renewal_enabled: Boolean for auto-renewal statusexpires_at: Expiration timestampGET /event-types/{slug}Get a specific event type by slug.
Parameters:
slug (string, required, path): Event type sluguser_id (string, required): Unique user identifierResponse: Single event type object with full details.
DELETE /event-types/{event_id}Delete an event type.
Parameters:
event_id (integer, required, path): Event type IDuser_id (string, required): Unique user identifierResponse: Deletion confirmation.
POST /event-types/{event_id}/renewRenew an expired event type. Costs 500 coins and extends for 1 month.
Parameters:
event_id (integer, required, path): Event type IDuser_id (string, required): Unique user identifierResponse: Updated event type with new expiration date.
POST /event-types/{event_id}/toggle-auto-renewalEnable or disable auto-renewal for an event type.
Parameters:
event_id (integer, required, path): Event type IDuser_id (string, required): Unique user identifierenabled (boolean, required): Auto-renewal state (true/false)Response: Updated event type with auto-renewal status.
POST /availabilitySet availability rules for scheduling.
Parameters:
user_id (string, required): Unique user identifierRequest Body: Array of availability rules:
day_of_week (integer, required): Day 0=Monday to 6=Sundaystart_time (string, required): Start time in HH:MM formatend_time (string, required): End time in HH:MM formatResponse: Confirmation of availability rules saved.
GET /availabilityGet all availability rules for a user.
Parameters:
user_id (string, required): Unique user identifierResponse: Array of availability rules with day, start time, and end time.
GET /available-slotsGet time slots with availability status for a specific date.
Parameters:
user_id (string, required): Unique user identifierevent_type_slug (string, required): Event type slugdate (string, required): Date in YYYY-MM-DD formatResponse: Array of available time slots with:
time: Slot time in HH:MM formatavailable: Boolean availability statusbooked_by: Guest name if bookedPOST /bookingsCreate a new booking.
Parameters: None
Request Body:
event_type_slug (string, required): Event type slugguest_name (string, required): Guest's full nameguest_email (string, required): Guest's email addressstart_time (string, required): Booking start time in ISO 8601 formattimezone (string, required): Guest's timezone (e.g., America/New_York)notes (string, optional): Additional booking notesResponse: Created booking object with confirmation details.
GET /bookingsGet all bookings for a user.
Parameters:
user_id (string, required): Unique user identifierResponse: Array of bookings with guest info, times, and status.
DELETE /bookings/{booking_id}Cancel a booking.
Parameters:
booking_id (string, required, path): Booking IDuser_id (string, required): Unique user identifierResponse: Cancellation confirmation.
GET /user/infoGet user information and profile details.
Parameters:
user_id (string, required): Unique user identifierResponse: User object with name, email, timezone, and account status.
POST /user/timezoneUpdate user's timezone setting.
Parameters:
user_id (string, required): Unique user identifierRequest Body:
timezone (string, required): Timezone identifier (e.g., America/Los_Angeles)Response: Updated user profile with new timezone.
POST /user/sync-wordpress-nameFetch and sync WordPress user's display name.
Parameters:
user_id (string, required): Unique user identifierResponse: Updated user profile with synced display name.
POST /user/initInitialize a user without Google OAuth (standalone mode).
Parameters:
user_id (string, required): Unique user identifiername (string, optional): User's display nameemail (string, optional): User's email addressResponse: Initialized user profile with account created timestamp.
GET /blocked-datesGet all blocked dates for a user.
Parameters:
user_id (string, required): Unique user identifierResponse: Array of blocked dates with:
id: Blocked date IDdate: Blocked date in YYYY-MM-DD formatreason: Optional reason for blockingPOST /blocked-datesAdd a blocked date.
Parameters:
user_id (string, required): Unique user identifierdate_str (string, required): Date in YYYY-MM-DD formatreason (string, optional): Reason for blockingResponse: Created blocked date object.
DELETE /blocked-dates/{blocked_id}Remove a blocked date.
Parameters:
blocked_id (integer, required, path): Blocked date IDuser_id (string, required): Unique user identifierResponse: Deletion confirmation.
GET /public/{user_id}/{slug}Get public booking page information without authentication.
Parameters:
user_id (string, required, path): User identifierslug (string, required, path): Event type slugResponse: Public event type details with available slots for booking.
POST /scheduler/process-expirationsProcess all expiring events, auto-renewals, and send notifications.
Note: This endpoint should be called daily by a cron job.
Parameters: None
Response: Processing summary with count of processed expirations and renewals.
| Plan | Calls/Day | Calls/Month | Price |
|---|---|---|---|
| Free | 5 | 50 | Free |
| Developer | 20 | 500 | $39/mo |
| Professional | 200 | 5,000 | $99/mo |
| Enterprise | 100,000 | 1,000,000 | $299/mo |
ToolWeb.in - 200+ security APIs, CISSP & CISM, platforms: Pay-per-run, API Gateway, MCP Server, OpenClaw, RapidAPI, YouTube.