Timekit developers

Creating resources

Bookable resources can represent people (employees, vendors), items (screwdriver, musical instrument) or locations (meeting rooms).

Please note that creating a resource via the API will create a plain Timekit resources. If you want to create a user-resource connected to a Google account, please read our guides on synced resources:

Its a good idea to have familiarised yourself with Timekits definition of a bookable resource before reading this article.

Introduction

Timekit can be used without your users even knowing, as resource creation and provisioning can be done 100% through the API. As such this tutorial will focus on resource creation solely through the API.

Save the IDs

As we'll demonstrate further down each resource will have its own unique identifier in the form of a UUID. This UUID is all you need to get up and running, querying for availability and handle bookings.

As per REST conventions you create resources by requesting the /resource endpoint with a POST like so:

curl
curl --request POST \
  --url https://api.timekit.io/v2/resources \
  --header 'Content-Type: application/json' \
  --user :live_api_key_7nzvc7wsBQQISLeFSVhROys9V1bUJ1z7 \
  --data '{
    "email": "doc.brown@timekit.io",
    "timezone": "America/Los_Angeles",
    "name": "Doc Brown",
    "password": "FluxCapacitator"
  }'

This will create the Doc Brown resource, only the "name" (or "first_name") and "timezone" parameters are mandatory, email is not mandatory as its not common for a conference room to have an email address, just to exemplify what a resource could also be.

The above request will produce a response similar to this (shortened; see Create a resource for every field):

json
{
  "data": {
    "id": "78a4d873-2a68-41c6-bdd4-c0ca5b35efd3",
    "email": "doc.brown@timekit.io",
    "image": null,
    "timezone": "America/Los_Angeles",
    "last_name": null,
    "first_name": "Doc Brown",
    "name": "Doc Brown",
    "calendars": [
      {
        "id": "bfa0b9fa-36aa-4ae6-8096-f3b20fbed1d2",
        "provider_id": null,
        "provider_access": "owner",
        "provider_primary": false,
        "provider_sync": false,
        "name": "Bookings",
        "description": "Created by Timekit on resource creation",
        "foregroundcolor": null,
        "backgroundcolor": null,
        "created_at": "2017-12-19T09:37:36+0200",
        "updated_at": "2017-12-19T09:37:36+0200",
        "provider": "timekit"
      }
    ]
  }
}

Now you should store the resource's ID somewhere on your end.

Last edited 6 October 2026.