# Schedule overrides API – Tiempo

> Replace one resource’s hours for one local date. An empty list means not working that day.

Source: https://tiempo.one/docs/schedule-overrides

Replace one resource’s hours for one local date. An empty list means not working that day.

## Create a schedule override

`POST /v1/schedule_overrides`

Replaces a resource’s hours for one local date. One per resource per date.

Send the business’s id in `Tiempo-Account`.

### Body parameters

-   `resource` (string, required)
    
    A resource id.
    
-   `date` (date, required)
    
    A local date, YYYY-MM-DD.
    
-   `intervals` (array of objects, required)
    
    The hours for that date, { start, end, location? } in HH:mm. Empty means not working.
    
    -   `start` (string, required)
        
        An ISO-8601 instant.
        
    -   `end` (string, required)
        
        An ISO-8601 instant, after start.
        
    -   `location` (string)
        
        A location id.
        
-   `metadata` (map)
    
    Up to 50 keys of your own (strings, keys up to 40 characters, values up to 500). Returned on every read and webhook. On update, an empty string removes a key.
    

POST /v1/schedule_overrides

```bash
curl -X POST "https://api.tiempo.one/v1/schedule_overrides" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw" \
  -H "Content-Type: application/json" \
  -d '{
    "resource": "res_ann",
    "date": "2026-12-24",
    "intervals": [
      {
        "start": "09:00",
        "end": "13:00"
      }
    ]
  }'
```

200Response

```json
{
  "id": "ovr_01m4h3a1b2c3d4e5f6g7h8j9k0",
  "object": "schedule_override",
  "livemode": false,
  "resource": "res_01m42ytc9b53589z4rp11zedjy",
  "date": "2026-12-24",
  "intervals": [
    {
      "start": "09:00",
      "end": "13:00",
      "location": null
    }
  ],
  "metadata": {},
  "created_at": "2026-10-04T08:00:20Z"
}
```

## List schedule overrides

`GET /v1/schedule_overrides`

Send the business’s id in `Tiempo-Account`.

### Query parameters

-   `resource` (string)
    
    Only those involving this resource. On the calendar, repeat it for several.
    
-   `from_date` (date)
    
    From this local date (YYYY-MM-DD), inclusive.
    
-   `to_date` (date)
    
    To this local date (YYYY-MM-DD), inclusive.
    
-   `limit` (integer)
    
    1 to 100. Defaults to 20.
    
-   `starting_after` (string)
    
    An object id from the previous page; returns the page after it.
    
-   `ending_before` (string)
    
    An object id; returns the page before it.
    
-   `metadata[key]` (string)
    
    Only objects whose metadata has this key and value. Repeat for several.
    

GET /v1/schedule_overrides

```bash
curl "https://api.tiempo.one/v1/schedule_overrides?resource=res_ann&from_date=2026-12-01" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw"
```

200Response

```json
{
  "object": "list",
  "data": [
    {
      "id": "ovr_01m4h3a1b2c3d4e5f6g7h8j9k0",
      "object": "schedule_override",
      "livemode": false,
      "resource": "res_01m42ytc9b53589z4rp11zedjy",
      "date": "2026-12-24",
      "intervals": [
        {
          "start": "09:00",
          "end": "13:00",
          "location": null
        }
      ],
      "metadata": {},
      "created_at": "2026-10-04T08:00:20Z"
    }
  ],
  "has_more": false
}
```

## Retrieve a schedule override

`GET /v1/schedule_overrides/{id}`

Send the business’s id in `Tiempo-Account`.

### Path parameters

-   `id` (string, required)
    
    The object’s id.
    

GET /v1/schedule_overrides/{id}

```bash
curl "https://api.tiempo.one/v1/schedule_overrides/ovr_01m4h3a1b2c3d4e5f6g7h8j9k0" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw"
```

200Response

```json
{
  "id": "ovr_01m4h3a1b2c3d4e5f6g7h8j9k0",
  "object": "schedule_override",
  "livemode": false,
  "resource": "res_01m42ytc9b53589z4rp11zedjy",
  "date": "2026-12-24",
  "intervals": [
    {
      "start": "09:00",
      "end": "13:00",
      "location": null
    }
  ],
  "metadata": {},
  "created_at": "2026-10-04T08:00:20Z"
}
```

## Update a schedule override

`POST /v1/schedule_overrides/{id}`

Changes the hours or metadata for that date. The resource and date are fixed: to move an override, delete it and create another. Bookings the new hours don’t cover are flagged conflicted.

Send the business’s id in `Tiempo-Account`.

### Path parameters

-   `id` (string, required)
    
    The object’s id.
    

### Body parameters

-   `intervals` (array of objects)
    
    The hours for that date, { start, end, location? } in HH:mm. Empty means not working.
    
    -   `start` (string, required)
        
        An ISO-8601 instant.
        
    -   `end` (string, required)
        
        An ISO-8601 instant, after start.
        
    -   `location` (string)
        
        A location id.
        
-   `metadata` (map)
    
    Up to 50 keys of your own (strings, keys up to 40 characters, values up to 500). Returned on every read and webhook. On update, an empty string removes a key.
    

POST /v1/schedule_overrides/{id}

```bash
curl -X POST "https://api.tiempo.one/v1/schedule_overrides/ovr_01m4h3a1b2c3d4e5f6g7h8j9k0" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw" \
  -H "Content-Type: application/json" \
  -d '{
    "intervals": [
      {
        "start": "09:00",
        "end": "13:00"
      }
    ]
  }'
```

200Response

```json
{
  "id": "ovr_01m4h3a1b2c3d4e5f6g7h8j9k0",
  "object": "schedule_override",
  "livemode": false,
  "resource": "res_01m42ytc9b53589z4rp11zedjy",
  "date": "2026-12-24",
  "intervals": [
    {
      "start": "09:00",
      "end": "13:00",
      "location": null
    }
  ],
  "metadata": {},
  "created_at": "2026-10-04T08:00:20Z"
}
```

## Delete a schedule override

`DELETE /v1/schedule_overrides/{id}`

Send the business’s id in `Tiempo-Account`.

### Path parameters

-   `id` (string, required)
    
    The object’s id.
    

DELETE /v1/schedule_overrides/{id}

```bash
curl -X DELETE "https://api.tiempo.one/v1/schedule_overrides/ovr_01m4h3a1b2c3d4e5f6g7h8j9k0" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Tiempo-Account: acct_01m42yt93ayvyrwr3yczhv6yhw"
```

200Response

```json
{
  "id": "…",
  "object": "…",
  "deleted": true
}
```

The machine-readable description is at [/openapi.json](https://tiempo.one/openapi.json). Try calls in [Swagger UI](https://tiempo.one/swagger-ui.html).[Tiempo home](https://tiempo.one/)[Dashboard](https://tiempo.one/app)
