LogoRecal

Get User Scheduling

Get available time slots based on free-busy data with basic parameters

GET
/v1/users/{userId}/scheduling

Authorization

AuthorizationRequiredBearer <token>

The Recal API token

In: header

Path Parameters

userIdRequiredstring

Query Parameters

providerstring | array<unknown>
paddingRequirednumber

Padding in minutes to add before and after busy times

Default: 0
slotDurationRequirednumber

Duration of each slot in minutes

Default: 30
startDateRequiredDate | string | number
endDateRequiredDate | string | number
earliestTimeEachDaystring

Requested earliest time of each day (in the time zone of the request) (e.g., 10:00)

latestTimeEachDaystring

Requested latest time of each day (in the time zone of the request) (e.g., 16:00)

Header Parameters

x-timezonestring
Default: "UTC"

Response Body

TypeScript Definitions

Use the response body type in TypeScript.

availableSlotsRequiredarray<object>
optionsRequiredobject

TypeScript Definitions

Use the response body type in TypeScript.

responseRequiredstring

TypeScript Definitions

Use the response body type in TypeScript.

responseRequiredstring

TypeScript Definitions

Use the response body type in TypeScript.

responseRequiredstring
curl -X GET "https://api.recal.dev/v1/users/string/scheduling?provider=google&padding=0&slotDuration=30&startDate=2025-06-04T00%3A00%3A00.000Z&endDate=2025-06-10T00%3A00%3A00.000Z&earliestTimeEachDay=string&latestTimeEachDay=string" \
  -H "x-timezone: UTC" \
  -H "Authorization: Bearer <token>"
fetch("https://api.recal.dev/v1/users/string/scheduling?provider=google&padding=0&slotDuration=30&startDate=2025-06-04T00%3A00%3A00.000Z&endDate=2025-06-10T00%3A00%3A00.000Z&earliestTimeEachDay=string&latestTimeEachDay=string", {
  headers: {
    "x-timezone": "UTC",
    "Authorization": "Bearer <token>"
  }
})
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "https://api.recal.dev/v1/users/string/scheduling?provider=google&padding=0&slotDuration=30&startDate=2025-06-04T00%3A00%3A00.000Z&endDate=2025-06-10T00%3A00%3A00.000Z&earliestTimeEachDay=string&latestTimeEachDay=string"

  req, _ := http.NewRequest("GET", url, nil)
  req.Header.Add("x-timezone", "UTC")
  req.Header.Add("Authorization", "Bearer <token>")
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://api.recal.dev/v1/users/string/scheduling?provider=google&padding=0&slotDuration=30&startDate=2025-06-04T00%3A00%3A00.000Z&endDate=2025-06-10T00%3A00%3A00.000Z&earliestTimeEachDay=string&latestTimeEachDay=string"

response = requests.request("GET", url, headers = {
  "x-timezone": "UTC",
  "Authorization": "Bearer <token>"
})

print(response.text)
{
  "availableSlots": [
    {
      "start": "1970-01-01T01:00:00.000+01:00",
      "end": "1970-01-01T01:00:00.000+01:00"
    }
  ],
  "options": {
    "padding": 0,
    "slotDuration": 30,
    "startDate": "2025-06-04T02:00:00.000+02:00",
    "endDate": "2025-06-10T02:00:00.000+02:00",
    "earliestTimeEachDay": "14:00",
    "latestTimeEachDay": "14:00"
  }
}
"Unable to process date: Invalid date format"
"User not found"
"An error occurred while processing your request"