Skip to content

Add a webhook endpoint

POST
/v1/webhooks
curl --request POST \
--url https://api.pensievelabs.co/v1/webhooks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "url": "https://example.com/hooks/pensieve", "events": [ "release.ready_for_signoff", "frontier.retested" ] }'

Events are signed with the endpoint’s secret in Pensieve-Signature; the SDKs check it for you.

Idempotency-Key
string
<= 255 characters

Any unique string. Sending it again within 24 hours returns the first response.

Media typeapplication/json
object
url
required
string format: uri
events
required
Array<string>
>= 1 items
Allowed values: release.ready_for_signoff release.promoted release.rolled_back frontier.retested model.lead_narrowed experiment.ended review.case_added batch.completed

Example

{
"url": "https://example.com/hooks/pensieve",
"events": [
"release.ready_for_signoff",
"frontier.retested"
]
}

The endpoint and its signing secret.

Media typeapplication/json
object
id
required
string
object
required
Allowed value: webhook_endpoint
url
required
string format: uri
events
required
Array<string>
Allowed values: release.ready_for_signoff release.promoted release.rolled_back frontier.retested model.lead_narrowed experiment.ended review.case_added batch.completed
secret

The signing secret, in the response that creates it only.

string
created_at
required
string format: date-time

Example

{
"id": "whe_3b7c11",
"object": "webhook_endpoint",
"events": [
"release.ready_for_signoff"
]
}

Something went wrong; error.type says what.

Media typeapplication/json
object
error
required
object
type
required
string
Allowed values: invalid_request authentication permission not_found conflict rate_limit not_available server
message
required
string
param

The request field the error is about.

string | null
request_id
required
string

Example

{
"error": {
"type": "invalid_request"
}
}