Timekit API

Timekit API as documented publicly: 12 operations. Contract generated from the documentation by API Evangelist (2026-10-29); not the provider's own document.

Operations 12

POST /availability Availability constraints #
GET /bookings Signed search Use signed search to fetch bookings for a customer on the frontend without an app API token #
POST /findtime Availability overview #
GET /v2/app GET /v2/app #
POST /v2/app/invite POST /v2/app/invite #
GET /v2/bookings GET /v2/bookings #
GET /v2/resources GET /v2/resources #
POST /v2/resources POST /v2/resources #
GET /v2/resources/{id} Retrieve a resource #
PUT /v2/resources/{id} Update a resource #
DELETE /v2/resources/{id} Delete a resource #
GET /webhooks GET /webhooks is also not paginated: it returns all webhooks in a single data array. #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/timekit:timekit-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

timekit-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: Timekit API
  version: '2026-10-29'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-29: 12 operation(s) read from 14 public documentation page(s) (each
    operation names its page in x-source). This is not the provider''s published contract; Timekit has published no machine-readable contract
    that the pipeline could find. Engine: local.'
  x-evidence-tiers:
    code-example: 9
    documentation: 3
    pages-with-code: 12
    pages-read: 14
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-29'
  x-generator: generate-contract-from-docs.py
  x-engine: local
  x-sources:
  - https://docs.timekit.io/reference/dynamic-includes
  - https://docs.timekit.io/reference/search
  - https://docs.timekit.io/reference/signed-search
  - https://docs.timekit.io/reference/pagination
  - https://docs.timekit.io/reference/authentication
  - https://docs.timekit.io/reference/app
  - https://docs.timekit.io/reference/appsinvite
  - https://docs.timekit.io/reference/resources
  - https://docs.timekit.io/reference/resources-1
  - https://docs.timekit.io/reference/resourcesid
  - https://docs.timekit.io/reference/resources-id
  - https://docs.timekit.io/reference/delete-resource
  - https://docs.timekit.io/reference/resource-availability-constraints
  - https://docs.timekit.io/reference/availability-v2
servers:
- url: https://api.timekit.io
paths:
  /availability:
    post:
      operationId: post_availability
      tags:
      - Availability
      summary: Availability constraints
      description: Set availability‑constraints for a single resource in order to limit availability. These constraints are combined with any
        provided constraints passed to the POST /availability endpoint when calculating availability for the resource.
      x-source: https://docs.timekit.io/reference/resource-availability-constraints
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /bookings:
    get:
      operationId: get_bookings
      tags:
      - Bookings
      summary: Signed search Use signed search to fetch bookings for a customer on the frontend without an app API token
      description: Fetch bookings using signed search; only GET /bookings is supported. Invalid signatures return 401, mismatched search values
        return 403, and unsupported include values return 403.
      x-source: https://docs.timekit.io/reference/signed-search
      parameters:
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Search query string, e.g. `customer.email:hi@example.com` or multiple criteria separated by `;`
      - name: signed_search
        in: query
        required: true
        schema:
          type: string
        description: JWT token signed with the app API key that scopes the request to a specific customer
      - name: include
        in: query
        required: false
        schema:
          type: string
        description: Comma‑separated list of related resources to include; allowed values are customers, event, calendar, attributes, related_bookings,
          owner_booking, available_actions, resource, meta and customer_action_links
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /findtime:
    post:
      operationId: post_findtime
      tags:
      - Findtime
      summary: Availability overview
      x-source: https://docs.timekit.io/reference/availability-v2
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /v2/app:
    get:
      operationId: get_v2_app
      tags:
      - App
      summary: GET /v2/app
      x-source: https://docs.timekit.io/reference/app
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV2AppResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request GET  --url https://api.timekit.io/v2/app  --header 'Content-Type: application/json'  --user :live_api_key_7nzvc7wsBQQISLeFSVhROys9V1bUJ1z7\n\
          \ Response examples \n 200 \n json { \n \"data\" : { \n \"id\" : \"9857f6bb-1e79-4a9f-aa59-7385d4e141e2\" , \n \"slug\" : \"back-to-the-future\"\
          \ , \n \"settings\" : { \n \"name\" : \"Back to the Future\" , \n \"callback\" : \"http:\\/\\/www.backtothefuture.com\\/callback\""
  /v2/app/invite:
    post:
      operationId: post_v2_app_invite
      tags:
      - App
      summary: POST /v2/app/invite
      x-source: https://docs.timekit.io/reference/appsinvite
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV2AppInviteRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request POST  --url https://api.timekit.io/v2/app/invite  --header 'Content-Type: application/json'  --user :live_api_key_7nzvc7wsBQQISLeFSVhROys9V1bUJ1z7\
          \  --data '{ \n \"email\": \"invite-this-email@example.org\" \n }' \n Responses \n A successful invite returns 200 with an empty body.\
          \ \n If no resource exists with that email, the API returns 404 . If the resource is already part of your app, "
  /v2/bookings:
    get:
      operationId: get_v2_bookings
      tags:
      - Bookings
      summary: GET /v2/bookings
      x-source: https://docs.timekit.io/reference/search
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request GET  --url https://api.timekit.io/v2/bookings?search = resource.id:78a4d873-2a68-41c6-bdd4-c0ca5b35efd3\
          \  --header 'Content-Type: application/json'  --user :live_api_key_7nzvc7wsBQQISLeFSVhROys9V1bUJ1z7\n Ex. 2: Search based on graph \n\
          \ Let's say we want to find all bookings based on their graph. \n Find all bookings made in the confirm_decline graph "
  /v2/resources:
    get:
      operationId: get_v2_resources
      tags:
      - Resources
      summary: GET /v2/resources
      x-source: https://docs.timekit.io/reference/resources-1
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV2ResourcesResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request GET  --url https://api.timekit.io/v2/resources  --header 'Content-Type: application/json'  --user :live_api_key_7nzvc7wsBQQISLeFSVhROys9V1bUJ1z7\n\
          \ Response examples \n 200 \n json { \n \"current_page\" : 1 , \n \"first_page_url\" : \"https://api.timekit.io/v2/resources?page=1\"\
          \ , \n \"from\" : 1 , \n \"last_page\" : 1 , \n \"last_page_url\" : \"https://api.timekit.io/v2/resources?page=1\" , \n \"next_"
    post:
      operationId: post_v2_resources
      tags:
      - Resources
      summary: POST /v2/resources
      x-source: https://docs.timekit.io/reference/resources
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostV2ResourcesRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl curl --request POST  --url https://api.timekit.io/v2/resources  --header 'Content-Type: application/json'  --user :live_api_key_7nzvc7wsBQQISLeFSVhROys9V1bUJ1z7\
          \  --data '{ \n \"email\": \"doc.brown@timekit.io\", \n \"timezone\": \"America/Los_Angeles\", \n \"name\": \"Doc Brown\", \n \"password\"\
          : \"FluxCapacitator\", \n \"image\": \"https://foo.bar/baz.png\" \n }' \n json { \n \"email\" : \"doc.brown@timekit.io\" , \n \"time"
  /v2/resources/{id}:
    get:
      operationId: get_v2_resources_id
      tags:
      - Resources
      summary: Retrieve a resource
      description: Get a specific resource by ID.
      x-source: https://docs.timekit.io/reference/resourcesid
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: include
        in: query
        required: false
        schema:
          type: string
        description: 'Comma-separated list of related data to include. Available includes: calendars , properties , accounts , credentials , tags
          , projects , availability_constraints . For example, ?include=accounts,calendars adds the synced account info and the resource''s calendars'
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV2ResourcesIdResponse'
      x-evidence:
        kind: documentation
    put:
      operationId: put_v2_resources_id
      tags:
      - Resources
      summary: Update a resource
      x-source: https://docs.timekit.io/reference/resources-id
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      - name: first_name
        in: query
        required: false
        schema:
          type: string
        description: First name of the user
      - name: last_name
        in: query
        required: false
        schema:
          type: string
        description: Last name of the user
      - name: timezone
        in: query
        required: false
        schema:
          type: string
        description: User's timezone following "area/city" schema
      - name: password
        in: query
        required: false
        schema:
          type: string
        description: 'User''s password in cleartext. Must be at least 6 characters and contain at least one letter, one digit and one of ! , $
          , # or % . Requires password_confirmation'
      - name: password_confirmation
        in: query
        required: false
        schema:
          type: string
        description: Required when password is sent. Must match password
      - name: meta
        in: query
        required: false
        schema:
          type: object
        description: meta data that you can add onto a resource
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PutV2ResourcesIdRequest'
      responses:
        '204':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
    delete:
      operationId: delete_v2_resources_id
      tags:
      - Resources
      summary: Delete a resource
      description: Deleting resources are final! There is no going back :)
      x-source: https://docs.timekit.io/reference/delete-resource
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: documentation
  /webhooks:
    get:
      operationId: get_webhooks
      tags:
      - Webhooks
      summary: 'GET /webhooks is also not paginated: it returns all webhooks in a single data array.'
      description: Returns all webhooks in a single data array. This endpoint is not paginated.
      x-source: https://docs.timekit.io/reference/pagination
      responses:
        '200':
          description: Success (status as documented)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetWebhooksResponse'
      x-evidence:
        kind: documentation
components:
  schemas:
    GetV2AppResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            slug:
              type: string
            settings:
              type: object
              properties:
                name:
                  type: string
                callback:
                  type: string
                from_email:
                  type: string
                from_name:
                  type: string
                contact_name:
                  type: string
                contact_email:
                  type: string
            created_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
            creator_resource_id:
              type: string
            role:
              type: string
            test_mode:
              type: boolean
            api_trial_expires_at:
              type: boolean
            webhook_secret:
              type: string
    PostV2AppInviteRequest:
      type: object
      properties:
        email:
          type: string
    GetV2ResourcesResponse:
      type: object
      properties:
        current_page:
          type: integer
        first_page_url:
          type: string
        from:
          type: integer
        last_page:
          type: integer
        last_page_url:
          type: string
        next_page_url:
          type:
          - string
          - 'null'
        per_page:
          type: integer
        prev_page_url:
          type:
          - string
          - 'null'
        to:
          type: integer
        total:
          type: integer
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              first_name:
                type: string
              last_name:
                type: string
              name:
                type: string
              email:
                type: string
              timezone:
                type: string
    PostV2ResourcesRequest:
      type: object
      properties:
        email:
          type: string
        timezone:
          type: string
        name:
          type: string
        password:
          type: string
        image:
          type: string
    GetV2ResourcesIdResponse:
      type: object
      properties:
        data:
          type: object
          description: Resource object
        data.id:
          type: string
        data.first_name:
          type: string
        data.last_name:
          type: string
        data.name:
          type: string
        data.email:
          type: string
        data.image:
          type: string
        data.timezone:
          type: string
    PutV2ResourcesIdRequest:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
        timezone:
          type: string
        password:
          type: string
        password_confirmation:
          type: string
        meta:
          type: object
    GetWebhooksResponse:
      type: object
      properties:
        data:
          type: array
          description: Array of webhook objects.
tags:
- name: App
- name: Availability
- name: Bookings
- name: Findtime
- name: Resources
- name: Webhooks