# Webhook endpoints API – Tiempo

> Where Tiempo sends events. One endpoint hears from every business on your platform.

Source: https://tiempo.one/docs/webhook-endpoints

Where Tiempo sends events. One endpoint hears from every business on your platform. Each endpoint reports its health: when it last worked, and since when it has been failing. One that fails every delivery for 3 days is turned off (disabled_reason "failing") until you turn it back on; then resend what it missed. Platform-level: no Tiempo-Account header.

## Create a webhook endpoint

`POST /v1/webhook_endpoints`

Live endpoints need https and a public host. The response includes the endpoint’s signing secret, once.

### Body parameters

-   `url` (string, required)
    
    Where to POST events. https in live mode; a public host.
    
-   `enabled_events` (array of strings, required)
    
    Event types to send, or ["*"] for all.
    
-   `api_version` (string)
    
    The API version events are rendered in for this endpoint. Defaults to your platform’s.
    
-   `description` (string)
    
    Your note.
    
-   `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/webhook_endpoints

```bash
curl -X POST "https://api.tiempo.one/v1/webhook_endpoints" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://bookup.example/tiempo/webhooks",
    "enabled_events": [
      "*"
    ]
  }'
```

200Response

```json
{
  "id": "we_01m42z0f5r8t2y6u9i3o7p1a4s",
  "object": "webhook_endpoint",
  "livemode": false,
  "url": "https://bookup.example/tiempo/webhooks",
  "enabled_events": [
    "*"
  ],
  "api_version": "2026-10-04",
  "status": "enabled",
  "disabled_reason": null,
  "disabled_at": null,
  "last_success_at": "2026-10-04T08:01:13Z",
  "failing_since": null,
  "consecutive_failures": 0,
  "description": null,
  "secret": "tpw_Gm3rX8kQ2vN7pL1sB5yD9cH4tJ6wF0zA",
  "metadata": {},
  "created_at": "2026-10-04T07:58:30Z"
}
```

## List webhook endpoints

`GET /v1/webhook_endpoints`

### Query parameters

-   `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/webhook_endpoints

```bash
curl "https://api.tiempo.one/v1/webhook_endpoints" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…"
```

200Response

```json
{
  "object": "list",
  "data": [
    {
      "id": "we_01m42z0f5r8t2y6u9i3o7p1a4s",
      "object": "webhook_endpoint",
      "livemode": false,
      "url": "https://bookup.example/tiempo/webhooks",
      "enabled_events": [
        "*"
      ],
      "api_version": "2026-10-04",
      "status": "enabled",
      "disabled_reason": null,
      "disabled_at": null,
      "last_success_at": "2026-10-04T08:01:13Z",
      "failing_since": null,
      "consecutive_failures": 0,
      "description": null,
      "secret": "tpw_Gm3rX8kQ2vN7pL1sB5yD9cH4tJ6wF0zA",
      "metadata": {},
      "created_at": "2026-10-04T07:58:30Z"
    }
  ],
  "has_more": false
}
```

## Retrieve a webhook endpoint

`GET /v1/webhook_endpoints/{id}`

### Path parameters

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

GET /v1/webhook_endpoints/{id}

```bash
curl "https://api.tiempo.one/v1/webhook_endpoints/we_01m42z0f5r8t2y6u9i3o7p1a4s" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…"
```

200Response

```json
{
  "id": "we_01m42z0f5r8t2y6u9i3o7p1a4s",
  "object": "webhook_endpoint",
  "livemode": false,
  "url": "https://bookup.example/tiempo/webhooks",
  "enabled_events": [
    "*"
  ],
  "api_version": "2026-10-04",
  "status": "enabled",
  "disabled_reason": null,
  "disabled_at": null,
  "last_success_at": "2026-10-04T08:01:13Z",
  "failing_since": null,
  "consecutive_failures": 0,
  "description": null,
  "secret": "tpw_Gm3rX8kQ2vN7pL1sB5yD9cH4tJ6wF0zA",
  "metadata": {},
  "created_at": "2026-10-04T07:58:30Z"
}
```

## Update a webhook endpoint

`POST /v1/webhook_endpoints/{id}`

### Path parameters

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

### Body parameters

-   `url` (string)
    
    Where to POST events. https in live mode; a public host.
    
-   `enabled_events` (array of strings)
    
    Event types to send, or ["*"] for all.
    
-   `api_version` (string)
    
    The API version events are rendered in for this endpoint. Defaults to your platform’s.
    
-   `disabled` (boolean)
    
    true pauses deliveries; false turns the endpoint back on, including after Tiempo turned it off for failing.
    
-   `description` (string)
    
    Your note.
    
-   `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/webhook_endpoints/{id}

```bash
curl -X POST "https://api.tiempo.one/v1/webhook_endpoints/we_01m42z0f5r8t2y6u9i3o7p1a4s" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Content-Type: application/json" \
  -d '{
    "disabled": true
  }'
```

200Response

```json
{
  "id": "we_01m42z0f5r8t2y6u9i3o7p1a4s",
  "object": "webhook_endpoint",
  "livemode": false,
  "url": "https://bookup.example/tiempo/webhooks",
  "enabled_events": [
    "*"
  ],
  "api_version": "2026-10-04",
  "status": "enabled",
  "disabled_reason": null,
  "disabled_at": null,
  "last_success_at": "2026-10-04T08:01:13Z",
  "failing_since": null,
  "consecutive_failures": 0,
  "description": null,
  "secret": "tpw_Gm3rX8kQ2vN7pL1sB5yD9cH4tJ6wF0zA",
  "metadata": {},
  "created_at": "2026-10-04T07:58:30Z"
}
```

## Resend to an endpoint

`POST /v1/webhook_endpoints/{id}/resend`

Queues again every delivery to this endpoint that gave up, and every event it never got (while it was off, or before it listened for that type), for events created between since and until. Without since: from when it started failing, else the last 3 days. Up to 1,000 per call; has_more means call again. Safe to repeat. If the endpoint is off, the deliveries wait until you turn it on.

### Path parameters

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

### Body parameters

-   `since` (timestamp)
    
    Events created from this instant.
    
-   `until` (timestamp)
    
    Events created before this instant. Defaults to now.
    

POST /v1/webhook_endpoints/{id}/resend

```bash
curl -X POST "https://api.tiempo.one/v1/webhook_endpoints/we_01m42z0f5r8t2y6u9i3o7p1a4s/resend" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…" \
  -H "Content-Type: application/json" \
  -d '{
    "since": "2026-11-14T00:00:00Z"
  }'
```

200Response

```json
{
  "object": "webhook_resend",
  "endpoint": "we_01m42z0f5r8t2y6u9i3o7p1a4s",
  "since": "2026-11-14T00:00:00Z",
  "until": "2026-11-17T09:30:00Z",
  "requeued": 37,
  "queued": 112,
  "has_more": false
}
```

## Delete a webhook endpoint

`DELETE /v1/webhook_endpoints/{id}`

Stops deliveries, including retries already queued.

### Path parameters

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

DELETE /v1/webhook_endpoints/{id}

```bash
curl -X DELETE "https://api.tiempo.one/v1/webhook_endpoints/we_01m42z0f5r8t2y6u9i3o7p1a4s" \
  -H "Authorization: Bearer tpt_4qZ8m1VwXc0L…"
```

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)
