REST API
Authentication and core endpoints. Full reference at api.recal.dev/v1/swagger.
For complete documentation with request/response schemas and interactive testing, visit the Swagger UI.
Base URL
https://api.recal.dev/v1Authentication
Use your API key in the Authorization header:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.recal.dev/v1/usersGenerate keys at app.recal.dev → API Keys
Endpoints
Scheduling
Find availability across users or organizations.
GET /v1/users/{userId}/schedulingGET /v1/organizations/{orgSlug}/scheduling
Users
GET /v1/users— List usersPOST /v1/users— Create userGET /v1/users/{userId}— Get detailsPUT /v1/users/{userId}— UpdateDELETE /v1/users/{userId}— Delete
Organizations
Create workspaces to group users. Optional for B2C, essential for B2B multi-tenancy.
GET /v1/organizations— List organizationsPOST /v1/organizations— Create organizationGET /v1/organizations/{orgSlug}— Get organization detailsPUT /v1/organizations/{orgSlug}— Update organizationDELETE /v1/organizations/{orgSlug}— Delete organization
Calendar
GET /v1/users/{userId}/calendar/busy— User busy periodsGET /v1/organizations/{orgSlug}/calendar/busy— Organization busy periods
OAuth
Supported: Google Calendar, Microsoft Outlook
GET /v1/users/{userId}/oauth— List connectionsPOST /v1/users/{userId}/oauth/{provider}/authorize— Start OAuthDELETE /v1/users/{userId}/oauth/{provider}— Remove connection
OAuth Scopes
Recal offers two simplified scope options:
edit- Full calendar read/write access (create, update, delete events)free-busy- Read-only access to availability information
When making API calls, Recal automatically validates scopes. If a user lacks required permissions, you'll receive a 403 Forbidden response:
{
"error": "Insufficient scopes for operation 'calendar.events.insert'. Required scope level: write. You need to request one of these scopes: ...",
"operation": "calendar.events.insert",
"validScopes": [
"https://www.googleapis.com/auth/calendar",
"https://www.googleapis.com/auth/calendar.events"
],
"data": null
}See the OAuth Setup Guide for detailed scope configuration.
Example Request
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.recal.dev/v1/usersResponses
We're responding in the standardized API format:
{
data: {
// The actual data payload
}
}
// or
{
data: null
error: string
}