Skip to content

Update a webhook target

PATCH
/v1/webhook-targets/{target_id}
curl --request PATCH \
--url https://api.vocapable.com/v1/webhook-targets/example \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "description": "example", "parameters": {}, "side_effect": "read_only", "url": "example", "timeout_seconds": 1, "max_invocations_per_call": 1, "status": "example" }'

Apply the supplied fields, under the same boundary checks as registration.

An edit takes effect for calls redeemed after it commits; a call already running keeps the configuration its session was bound with.

target_id
required
Target Id
string
Media typeapplication/json
WebhookTargetUpdateRequest

PATCH /webhook-targets/{id}. Only the fields present in the body are applied.

webhook_id is deliberately not editable: it is the identity the model reads, the transcript records, and the eval store keys on. Renaming a target is registering a new one and disabling the old. status: "active" is the re-enable path; the one-way convenience for the other direction is DELETE.

object
description
Any of:
string
>= 1 characters <= 500 characters
parameters
Any of:
object
key
additional properties
any
side_effect
Any of:
SideEffect

Whether an invocation only reads, or changes state something else can observe.

Two values by design: anything that is not a lookup gets an idempotency key. That is why end_call - runtime-local, but a state change - is MUTATING.

string
Allowed values: read_only mutating
url
Any of:
string
>= 1 characters <= 2048 characters
timeout_seconds
Any of:
number
> 0 <= 30
max_invocations_per_call
Any of:
integer
>= 1 <= 20
status
Any of:
string
/^(active|disabled)$/

Successful Response

Media typeapplication/json
WebhookTargetSummary

A target as every read renders it - structurally incapable of leaking a secret.

object
id
required
Id
string
webhook_id
required
Webhook Id
string
description
required
Description
string
parameters
required
Parameters
object
key
additional properties
any
side_effect
required
Side Effect
string
timeout_seconds
required
Timeout Seconds
number
max_invocations_per_call
required
Max Invocations Per Call
integer
url
required
Url
string
status
required
Status
string
previous_secret_expires_at
required
Any of:
string format: date-time
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
Examplegenerated
{
"id": "example",
"webhook_id": "example",
"description": "example",
"parameters": {},
"side_effect": "example",
"timeout_seconds": 1,
"max_invocations_per_call": 1,
"url": "example",
"status": "example",
"previous_secret_expires_at": "2026-04-15T12:00:00Z",
"created_at": "2026-04-15T12:00:00Z",
"updated_at": "2026-04-15T12:00:00Z"
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}