FeaturesCustomersPricingDOCSLogin Get Started
WE'RE HIRING

Flexible & Feature-rich Platform

from infrastructure to UI

Built With Developers in Mind

It's time to leave bloated turn-key solutions behind. Timekit is a booking system with a powerful API at its core that can be added to any product or website.

Javascript
SDK
PHP
Curl
Python

And every other language that can perform HTTP REST calls


// Find available time between two users for 2 hours within the next 3 weeks:
var timekit = require('timekit');
timekit.configure({ app: 'demo' });
timekit.setUser(
  'doc.brown@timekit.io',
  'FluxCapacitator'
); 
timekit.findTime({
  emails: [
    'doc.brown@timekit.io',
    'marty.mcfly@timekit.io'
  ],
  length: '2 hours',
  future: '3 weeks'
}).then(function(result) { 
  console.log(result);
});

// Find available time between two users for 2 hours within the next 3 weeks:
include_once 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$request = $client->post('https://api.timekit.io/v2/findtime', [
  'auth' => [
    'doc.brown@timekit.io',
    'FluxCapacitator'
  ],
  'headers' => [
    'Timekit-App' => 'demo'
  ],
  'json' => [
    'emails' => [
      'doc.brown@timekit.io',
      'marty.mcfly@timekit.io'
    ],
    'future' => '3 weeks',
    'length' => '2 hours'
  ]
]);
echo $request->getBody();

# Find available time between two users for 2 hours within the next 3 weeks:
curl -X POST \
     -H 'Timekit-App: demo' \
     -u doc.brown@timekit.io:FluxCapacitator \
     -d '{
           "emails": [
             "doc.brown@timekit.io",
             "marty.mcfly@timekit.io"
           ],
           "length": "2 hours",
           "future": "3 weeks"
         }' \
     https://api.timekit.io/v2/findtime

# Find available time between two users for 2 hours within the next 3 weeks:
import requests
url = 'https://api.timekit.io/v2/findtime'
headers = {
  'Timekit-App': 'demo',
  'Content-type': 'application/json', 
  'Accept': 'text/plain'
}
auth = (
  'doc.brown@timekit.io',
  'FluxCapacitator'
)
data = '{
  "emails": [
    "doc.brown@timekit.io",
    "marty.mcfly@timekit.io"
  ],
  "future": "2 days",
  "length": "30 minutes"
}'
response = requests.post(url, data=data, headers=headers, auth=auth)
print response.json

Learn how to build with our Quickstart Guide

Search for availability with smart filters with Find Time algorithm

Start building Javascript apps with our new JS SDK (github)

A Beautiful UI Widget

With Booking.js, you can create an elegant booking experience in no time - 100% white label &  powered by the Timekit platform.

A Powerful Booking Engine

Use our widget or your own UI

Booking.js is a simple, elegant booking widget that makes it dead simple to take orders online. It's customizable, free and runs on top of the Timekit API.

Real-time availability

Forget about back-and-forth scheduling - with Timekit you can query availability real-time without manual intervention.

Flows that fit your business

Our booking engine supports flows that supports your business logic. Confirm/decline, instant booking and more.

Built for Scale

Unlimited create, edit and delete

Whether it is meetings, bookings or appointments, Timekit makes it easy to programmatically add, edit and delete unlimited calendars and event data through a simple API. 

For people and resources

Calendars can be used for more than just people. Cars, office spaces, services, or meeting rooms and can have schedules with free/busy status - use Timekit to power everything! 

User level access control

Each calendar are owned by users which gives you the possibility to grant access on a per user basis. This makes it easy to build everything from simple booking systems to full-fledged personal calendar apps.

A Sophisticated Availability Engine

Query for availability with rules

Availability is free spots in a calendar. But no events at a given time, does not mean true availability.  To ensure relevance in your search results, Timekit uses 'Smart Filters' that works as your tool to define rules for your search. 

Smart filters and availability rules

Businesses work within opening hours. Employees have working hours and personal preferences for meetings. Each use case is different and you should be able to accommodate that. Timekit makes it easy to turn rules into flexible query filters.  

Mutual availability between users

Filters can also be applied across multiple calendars for finding mutual availability. So building an app with one person in Copenhagen, another in Shanghai, and third in San Francisco is straight forward. Timekit applies a sophisticated algorithm to do this, so you can focus on building a beautiful user experience. 

Read more about Find Time in the API docs


{
  "and": [
    {
      "specific_day": {
        "day": "Monday"
      }
    },
    {
      "specific_time": {
        "start": "6",
        "end": "20",
        "timezone": "Europe/Copenhagen"
      }
    },
    {
      "specific_time": {
        "start": "7",
        "end": "15",
        "timezone": "Asia/Shanghai"
      }
    }
  ]
}

Sync Engine That Just Works

Maintaining sync infrastructure is hard 

Timekit can work as your calendar backend. But it also gives you the option of switch to or combine with the existing calendar infrastructure provided by Google. We'll keep everything up to date and in sync.

Add smart query logic to existing Google calendars

The sync integration is 2-way and supports writing events to calendars, reading events and even supports powerful querying that Google doesn't support out of the box. 

Crucial Timezone Support

Free your mind from timezone headaches

Have you ever tried to schedule meetings across three timezones? You have to think about things like offsets, daylight savings time and displaying localized timestamps. It's easier said than done.

Timezone-aware throughout the platform

Timekit is built with timezones in mind. It is an integrated part of the platform. Every request, query and event data is timezone aware and can easily be converted from one to another.   

Notifications, webhooks & Much More

Call webhooks when bookings are created, confirmed or declined.
Send white-labeled emails or manage it yourself.