import requests
url = "https://app.langwatch.ai/api/webhooks/v1/endpoints"
payload = { "enabled_events": ["<string>"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled_events: ['<string>']})
};
fetch('https://app.langwatch.ai/api/webhooks/v1/endpoints', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://app.langwatch.ai/api/webhooks/v1/endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled_events": [
"<string>"
]
}
'{
"data": {
"destination_kind": "<string>",
"url": "<string>",
"sqs": null,
"id": "<string>",
"enabled_events": [
"<string>"
],
"disabled_reason": "<string>",
"disabled_at": "<string>",
"failing_since": "<string>",
"last_success_at": "<string>",
"last_failure_at": "<string>",
"max_batch_size": 123,
"max_batch_delay_ms": 123,
"max_in_flight": 123,
"created_at": "<string>",
"updated_at": "<string>",
"secret": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}Create a webhook endpoint
Create a webhook endpoint. Name one destination: url for destination_kind: http, sqs for destination_kind: sqs. Naming the other kind’s field is a 400 that says which field does not belong, rather than a 201 that saved half the body. destination_kind may be omitted and then means http. The signing secret is returned ONCE in this response and never again; roll it to get a new one. Send Idempotency-Key to make a retry safe: a replay returns the original response including its secret, which is the only way to recover a secret whose response was lost in transit.
import requests
url = "https://app.langwatch.ai/api/webhooks/v1/endpoints"
payload = { "enabled_events": ["<string>"] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled_events: ['<string>']})
};
fetch('https://app.langwatch.ai/api/webhooks/v1/endpoints', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://app.langwatch.ai/api/webhooks/v1/endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled_events": [
"<string>"
]
}
'{
"data": {
"destination_kind": "<string>",
"url": "<string>",
"sqs": null,
"id": "<string>",
"enabled_events": [
"<string>"
],
"disabled_reason": "<string>",
"disabled_at": "<string>",
"failing_since": "<string>",
"last_success_at": "<string>",
"last_failure_at": "<string>",
"max_batch_size": 123,
"max_batch_delay_ms": 123,
"max_in_flight": 123,
"created_at": "<string>",
"updated_at": "<string>",
"secret": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"meta": {},
"trace_id": "<string>",
"span_id": "<string>"
}
}Authorizations
Admin API key for organization-level operations (managing projects, API keys). Create one in Settings > API Keys or via POST /api/api-keys. Format: sk-lw-{id}_{secret}.
Headers
A caller-chosen key, 8 to 255 characters, that makes this create safe to retry. The first request to use a key runs normally and its response is stored for 24 hours. A later request with the same key and the same body is not executed again: it returns the stored response, marked with X-Idempotent-Replay: true. The same key with a different body is refused 409 idempotency_error, as is a retry sent while the original is still running. Only successful responses are stored, so a create that failed can simply be retried with the same key.
8 - 255Body
1 - 100 elements1 - 200http, sqs 1 - 2000Show child attributes
Show child attributes
Response
The endpoint, with the signing secret this body alone carries
- Option 1
- Option 2
Show child attributes
Show child attributes
Was this page helpful?