Skip to content

resource.deleted

POST

A resource is deleted. data.object is the resource as it was. Sent to the account’s webhooks, and to an OAuth app that subscribes to it while its installation grants resources:read.

X-Talki-Signature
required
string

t=<unix seconds>,v1=<hex HMAC-SHA256>, the HMAC computed over <t>.<raw body> with the signing secret. During a secret rotation it carries one v1 per secret: accept the request if any matches.

X-Talki-Event
required
string

The event type, as in type.

X-Talki-Delivery
required
string

The event ID, as in id.

Media typeapplication/json
object
id
required
Id

The event’s ID, evt_ and 32 hex characters. Equal to the X-Talki-Delivery header and unchanged on a redelivery: deduplicate on it.

string
type
required
string
Allowed values: resource.deleted
created_at
required
Created At

When the event was written, ISO 8601 with a +00:00 offset, possibly with microseconds. Parse it as an instant.

string format: date-time
api_version
required
Api Version

The dated contract version data is shaped for: the endpoint’s version on a webhook, the app’s on an app event.

string
account_id
required
Account Id

The Talki account the event happened on.

string
livemode
required
Livemode

false for an event from a sandbox account.

boolean
origin
required
Any of:
EventOrigin
object
source
required
Source

Where the change came from: voice (the assistant, during a call), dashboard (a person in the Talki web or mobile app), api (a credential through the API) or system (a rule Talki applied on its own). New values may be added; treat one you do not recognise as unknown.

string
credential_id
required
Any of:
string
idempotency_key
required
Any of:
string
installation_id
Any of:
string
data
required

The event’s payload.

object
object
required

The Resource object, as the REST API returns it.

object
id
required
Id

Opaque Talki resource identifier.

string
location_id
required
Location Id

The location it is at (GET /v1/locations). Capacity is physical: only services of the same location draw on it. Never null, and it never changes.

string
name
required
Name

What the business calls this resource.

string
mode
required
Mode

shared — one fungible pool of capacity units (covers, seats, slots). units — a set of discrete sized units, described by unit_classes.

string
Allowed values: shared units
capacity
required
Capacity

In shared mode, the total units available at one time. In units mode this is the size of the LARGEST SINGLE unit, not a total — a resource with six four-tops reports 4. Use max_party_size for the question you probably mean.

integer
max_party_size
required
Max Party Size

The largest single booking this resource can hold at one time, in its own units, before any service’s rate is applied. Equals capacity in shared mode; in units mode it is derived from the classes and the combining rules, so six combinable four-tops report more than 4. A booking above this is refused with party_too_large.

integer
combine_across_classes
required
Combine Across Classes

True when a single booking may join units of DIFFERENT classes (a four-top plus a two-top for six). Per-class combinable still governs whether a class may be joined at all. Always false for a shared resource.

boolean
unit_classes
required
Unit Classes

The discrete units this resource is made of. Always empty for a shared resource.

Array<object>
ResourceUnitClass

count identical units that each hold size — six four-seat tables, two rooms that sleep four. Units have no individual identity: you can see how many exist, not which are taken.

object
id
required
Id

Opaque identifier for this class of units.

string
name
required
Name

What the business calls these units.

string
size
required
Size

How much one unit of this class holds — covers at a table, people in a room, always 1 for a single-occupancy station.

integer
count
required
Count

How many identical units of this size exist.

integer
combinable
required
Combinable

True when several units of this class may be joined to hold one oversized booking (two four-tops pushed together for six).

boolean
combine_max
required
Any of:
integer
services
required
Services

Which services draw on this resource, and at what rate. Empty means no service currently books against it, which makes it inert rather than unlimited.

Array<object>
ResourceServiceLink

A service that draws on this resource, and how much of it one booking takes.

object
service_id
required
Service Id

Opaque identifier of a service in GET /v1/services.

string
rate
required
Rate

Units of this resource consumed per booked unit of the service. A booking of quantity q consumes q * rate. Usually 1; a service that occupies two stations at once has 2.

integer
owner_service_id
required
Any of:
string
is_default
required
Is Default

True for a location’s default resource: the shared limit new duration services of that location draw on unless they are given their own or other resources, such as the salon’s chairs. At most one per location.

boolean
created_at
required
Created At

RFC 3339 UTC.

string format: date-time
updated_at
required
Updated At

RFC 3339 UTC. Moves when the resource, any of its unit classes, or any of its service links changes.

string format: date-time
Example
{
"id": "evt_04d8e87897db4ecab459a456ea55e754",
"type": "resource.deleted",
"created_at": "2026-09-22T15:04:06.218734+00:00",
"api_version": "2026-10-01",
"account_id": "f7e39b9a-1ac8-45e4-93da-2600f17cb286",
"livemode": true,
"origin": {
"source": "dashboard",
"credential_id": null,
"idempotency_key": null
},
"data": {
"object": {
"id": "b91c5d3e-0c1a-4a2f-9e6b-7c0d4e8f1a52",
"location_id": "0b7d4e19-8a2c-4f61-9d3e-5c1a7b2f8e40",
"name": "Dining room",
"mode": "units",
"capacity": 4,
"max_party_size": 8,
"combine_across_classes": false,
"unit_classes": [
{
"id": "1f2b9c07-3d64-4a1e-8f95-2b7c6d0e4a31",
"name": "Four-tops",
"size": 4,
"count": 6,
"combinable": true,
"combine_max": 2
}
],
"services": [
{
"service_id": "45c470b7-592a-42cd-8ce8-5d7a0a497d26",
"rate": 1
}
],
"owner_service_id": null,
"is_default": false,
"created_at": "2026-08-01T08:00:00Z",
"updated_at": "2026-09-10T10:30:00Z"
}
}
}

Any 2xx acknowledges the event. Any other status, a redirect, or no answer within 10 seconds is a failure and is retried; 410 disables a webhook endpoint at once.