Skip to content

Create a webhook endpoint

POST
/v1/webhook-endpoints
curl --request POST \
--url https://api.validationcheck.net/v1/webhook-endpoints \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "url": "https://example.com/webhooks/validationcheck", "events": [ "credits.low", "credits.depleted" ], "description": "example", "format": "json" }'

Returns the signing secret once. Verify each delivery’s VC-Signature header with it.

Media typeapplication/json
object
url
required
string
>= 1 characters <= 500 characters

Example

https://example.com/webhooks/validationcheck
events
required
Array
>= 1 items

Example

[
"credits.low",
"credits.depleted"
]
description
string
<= 120 characters
format

Defaults to slack or discord for their incoming-webhook URLs, json otherwise.

string
Allowed values: json slack discord

Created

Media typeapplication/json
object
success
required
boolean
data
required
object
id
required
string
url
required
string
description
required
string | null
events
required

Event types, or [“*”] for all.

Array<string>
format
required

Json: signed JSON payload. slack / discord: a chat message for an incoming-webhook URL.

string
Allowed values: json slack discord
status
required
string
Allowed values: enabled disabled
disabled_reason
required

“failing” when turned off after a day of failed deliveries.

string | null
created_at
required
string
secret
required

Signs every delivery (VC-Signature). Shown only when created or rotated.

string

Example

{
"success": true,
"data": {
"id": "we_3f9c…",
"format": "json",
"status": "enabled"
}
}

Error

Media typeapplication/json
object
success
required
boolean
error
required
object
code
required
string
Allowed values: INVALID_REQUEST INVALID_INPUT MISSING_FIELD UNAUTHORIZED INSUFFICIENT_CREDITS FORBIDDEN_SCOPE ACCOUNT_SUSPENDED NOT_FOUND IDEMPOTENCY_CONFLICT INPUT_LIMIT_EXCEEDED RATE_LIMITED INTERNAL_ERROR UPSTREAM_UNAVAILABLE MAINTENANCE
message
required
string
docs_url
required
string format: uri
request_id
required
string

Example

{
"success": false,
"error": {
"code": "INVALID_REQUEST"
}
}

Error

Media typeapplication/json
object
success
required
boolean
error
required
object
code
required
string
Allowed values: INVALID_REQUEST INVALID_INPUT MISSING_FIELD UNAUTHORIZED INSUFFICIENT_CREDITS FORBIDDEN_SCOPE ACCOUNT_SUSPENDED NOT_FOUND IDEMPOTENCY_CONFLICT INPUT_LIMIT_EXCEEDED RATE_LIMITED INTERNAL_ERROR UPSTREAM_UNAVAILABLE MAINTENANCE
message
required
string
docs_url
required
string format: uri
request_id
required
string

Example

{
"success": false,
"error": {
"code": "INVALID_REQUEST"
}
}

Error

Media typeapplication/json
object
success
required
boolean
error
required
object
code
required
string
Allowed values: INVALID_REQUEST INVALID_INPUT MISSING_FIELD UNAUTHORIZED INSUFFICIENT_CREDITS FORBIDDEN_SCOPE ACCOUNT_SUSPENDED NOT_FOUND IDEMPOTENCY_CONFLICT INPUT_LIMIT_EXCEEDED RATE_LIMITED INTERNAL_ERROR UPSTREAM_UNAVAILABLE MAINTENANCE
message
required
string
docs_url
required
string format: uri
request_id
required
string

Example

{
"success": false,
"error": {
"code": "INVALID_REQUEST"
}
}

Error

Media typeapplication/json
object
success
required
boolean
error
required
object
code
required
string
Allowed values: INVALID_REQUEST INVALID_INPUT MISSING_FIELD UNAUTHORIZED INSUFFICIENT_CREDITS FORBIDDEN_SCOPE ACCOUNT_SUSPENDED NOT_FOUND IDEMPOTENCY_CONFLICT INPUT_LIMIT_EXCEEDED RATE_LIMITED INTERNAL_ERROR UPSTREAM_UNAVAILABLE MAINTENANCE
message
required
string
docs_url
required
string format: uri
request_id
required
string

Example

{
"success": false,
"error": {
"code": "INVALID_REQUEST"
}
}