Skip to content

Ship calendar features.
Skip the OAuth review.

Your users connect Google Calendar, Outlook and Zoom through Pyas Auth, which Google, Microsoft and Zoom have already verified. Then one API reads and writes their events, adds meeting links, finds free time and tells you what changed.

Start freeRead the docsFree for 3 connected accounts
PyasConnect
The PyasConnect dialog offering Google Calendar, Outlook and Zoom
GET /v2/events200
{
  "provider": "microsoft",
  "title": "Design review",
  "startsAt": "2026-11-03T19:30:00Z",
  "startsAtLocal": "2026-11-03T14:30:00-05:00",
  "timezone": "America/New_York",
  "conferencing": { "provider": "teams" }
}
Works with
  • Google Calendar
  • Outlook and Microsoft 365
  • Zoom
  • Google Meet
  • Microsoft Teams
09:00 Connect

The OAuth review is the slow part. We already passed it.

Calendar scopes are sensitive, so Google reviews every app that reads them, and developers report waits of five weeks to four months. On Microsoft 365, the default policy now lets only an administrator approve calendar access for any app, so work accounts need an admin's approval on top.

With Pyas Auth, your users approve Pyas on Google's, Microsoft's and Zoom's own consent screens, on every plan. When you want your name there instead, switch that provider to Native Auth.

app.pyas.io
Provider setup in the Pyas dashboard: Pyas Auth in use for Google, with Native Auth as the alternative
10:00 Build

One shape for every provider

An Outlook event and a Google event come back the same way, with UTC and local times and an IANA time zone. You write each feature once.

Create an event with a meeting link

Ask for Meet, Teams or Zoom on any event. On an Outlook.com account, where Teams links can't be made, you get an error that says so instead of an event without one.

book.tsNode.js
const event = await pyas.events.create({
  accountId,
  title: 'Intro call',
  startsAt: '2026-11-03T15:00:00Z',
  endsAt: '2026-11-03T15:30:00Z',
  attendees: [{ email: 'maya.chen@gmail.com' }],
  conferencing: { provider: 'meet' },
})

Find a time that works for everyone

Across Google and Outlook calendars at once, inside working hours, lined up with the time zone you choose.

schedule.tsNode.js
const slots = await pyas.meetingTimes.find({
  accountIds: [maya, sam],
  from: '2026-11-02T00:00:00Z',
  to: '2026-11-07T00:00:00Z',
  durationMinutes: 30,
  timezone: 'America/New_York',
})

Hear about every change

Signed webhooks that name the exact event or calendar that changed, with a recurring series reported once. The event ID stays the same on every retry, so you process each change once.

webhooks.tsExpress
const raw = express.raw({ type: 'application/json' })

app.post('/pyas/webhooks', raw, async (req, res) => {
  const signature = req.header('Pyas-Signature')
  const event = await pyas.webhooks.constructEvent(req.body, signature, secret)
  // event.type: 'event.updated', event.data.object: the event's ID and calendar
  res.sendStatus(200)
})
11:00 Run

See what your users' calendars are doing

The dashboard is built for the day after launch: who can't sync, which webhook failed, and what a request did.

app.pyas.io
Connected accounts in the Pyas dashboard: one revoked, one missing a permission
12:00 Agents

Your agent can book the meeting

The Pyas MCP server gives Claude, Cursor, VS Code or your own agent the calendar: events, free time, meeting links and account health. Each tool says whether it reads or changes data, so the agent can ask you first.

  • find_meeting_times
  • create_event
  • respond_to_event
  • accounts_needing_attention
  • explain_error
Pyas for agents
TerminalClaude Code
$ claude mcp add pyas --env PYAS_API_KEY=pyas_sk_test_... -- npx -y @pyas/mcp

› Find 30 minutes with Sam Patel next week and send Avery
  an invite with a Meet link.

  pyas find_meeting_times  2 people, 30 min, working hours
  pyas create_event        on Avery's Google calendar

  Tuesday at 15:00 in London, 10:00 in New York, is free for
  both. The invite is sent, with a Google Meet link.
app.pyas.io
The Pyas dashboard in test mode, showing an app's sandbox and its sample accounts
13:00 Test

Build against calendars that aren't real

Every app has a sandbox: sample people on Pyas calendars, each with a week of everyday events, plus simulated Google, Outlook and Zoom accounts that answer the way those providers do. Test keys reach only the sandbox.

How the sandbox works →
14:00 Grow

Priced by connected account

Verified sign-in, every provider, webhooks and the sandbox come with every plan. You pay as more of your users connect.

Connect a calendar today