Create a project

Create a project

Create a new project.

Projects are meant to be used togehter with our fetch availability endpoint and the create bookings endpoint. It's a way to persistent configurations for these parts of Timekit at our end. Please note that you can always override the project settings in the request to the booking and availability endpoints.

Let's take a look at the properties you can set and what they do in 1-to-1 projects:


🔒Only available on Platform plan

Creating projects through the API is locked on the Essential and Professional plans. Please see our pricing page.


resources is a list of resource IDs that make your defined resources available for booking within specific the project. Please see the fetch availability endpoint.

availability contains the top-level parameters that the fetch availability endpoint takes. These should map 1:1 with what is specified on the endpoint

availability_constraints are you project-level availability constraints which are applied in addition to resource-level constraints defined directly on your resources. Please see the fetch availability endpoint.

Clarification: Please note that { "block_period": { "start": "2022-05-01", "end": "2022-05-06" } } means 2022-05-01T00:00:00 (midnight of May 1st) to 2022-05-06T00:00:00 (midnight of May 6th). This means that May 6th at 00:01 and everything afterwards are not counted in the block. If you want to block off all of May 6th, you'd use { "block_period": { "start": "2022-05-01", "end": "2022-05-07" } } as this is midnight of May 7th.


booking contains the top-level parameters that the create booking endpoint takes. These should map 1:1 with what is specified on the endpoint

Please note that if you want to make a project that offers group bookings (classes etc.) you need to create the group_owner classes before they will be visible through the project. The project setting under booking.graph should likewise be set to group_customer because this is the kind of bookings that will end up being created through the project.

reminders are reminders (aka. "event notifications"), which are documented in depth here.


customer_fields specifies which inputs you want your customers to fill out when making a booking. If you use our booking.js widget, the fields you declare are rendered on the form screen. Please see the booking.js docs for a full reference.

ui are miscellaneous UI specific settings that are meant to instruct how the booking flow for your customers should behave. Our booking.js v2 widget uses these when embedded on your own web page or on our hosted URL. If you're building your own UI, you can use these as hints on how to render to your component, although it's completely optional.

Attach meta data to projects

meta is extra data you can attach to the project, stored as key-value pairs. This could be an external_id from your own system or maybe the address of the store the project represents.
This data will be searchable via /projects endpoint, see:


Many-to-1 (group bookings)

Using projects for group bookings is different from the default 1-to-1 bookings. Essentially, the only required setting is booking: { graph: 'group_customer' } and optionally customer_fields and ui. Bookable slots are created as bookings with the group_owner graph which you link together with the project by passing project_id parameter to the booking created.

Click Try It! to start a request and see the response here!