curl -X POST "https://api.dcycle.io/v2/webhook-endpoints" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}" \
-H "Content-Type: application/json" \
-d '{
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
}'
import os
import requests
response = requests.post(
"https://api.dcycle.io/v2/webhook-endpoints",
headers={
"x-api-key": os.environ["DCYCLE_API_KEY"],
"x-organization-id": os.environ["DCYCLE_ORG_ID"],
},
json={
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
},
timeout=30,
)
response.raise_for_status()
print(response.status_code, response.json())
const axios = require('axios');
const response = await axios.post('https://api.dcycle.io/v2/webhook-endpoints', {
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
}, {
headers: {
'x-api-key': process.env.DCYCLE_API_KEY,
'x-organization-id': process.env.DCYCLE_ORG_ID,
},
});
console.log(response.status, response.data);
{
"id": "5c9e2f14-8b7a-4d3e-9f60-1a2b3c4d5e6f",
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
],
"enabled": true,
"consecutive_failures": 0,
"disabled_reason": null,
"created_at": "2026-10-01T09:12:44.512031",
"updated_at": "2026-10-01T09:12:44.512031",
"secret": "whsec_kq3v0VJ9pX2rT7mB4nL8dH1sF6gW5yC0eA3uZ9iO2tQ"
}
Create Webhook Endpoint
Register a URL to receive events
POST
/
v2
/
webhook-endpoints
curl -X POST "https://api.dcycle.io/v2/webhook-endpoints" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}" \
-H "Content-Type: application/json" \
-d '{
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
}'
import os
import requests
response = requests.post(
"https://api.dcycle.io/v2/webhook-endpoints",
headers={
"x-api-key": os.environ["DCYCLE_API_KEY"],
"x-organization-id": os.environ["DCYCLE_ORG_ID"],
},
json={
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
},
timeout=30,
)
response.raise_for_status()
print(response.status_code, response.json())
const axios = require('axios');
const response = await axios.post('https://api.dcycle.io/v2/webhook-endpoints', {
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
}, {
headers: {
'x-api-key': process.env.DCYCLE_API_KEY,
'x-organization-id': process.env.DCYCLE_ORG_ID,
},
});
console.log(response.status, response.data);
{
"id": "5c9e2f14-8b7a-4d3e-9f60-1a2b3c4d5e6f",
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
],
"enabled": true,
"consecutive_failures": 0,
"disabled_reason": null,
"created_at": "2026-10-01T09:12:44.512031",
"updated_at": "2026-10-01T09:12:44.512031",
"secret": "whsec_kq3v0VJ9pX2rT7mB4nL8dH1sF6gW5yC0eA3uZ9iO2tQ"
}
← Webhooks
Register an HTTPS URL that receives the organization’s events. The response is the only time the signing secret is returned.
Beta. Part of the webhooks API, currently in beta. The contract may still change before general availability.
curl -X POST "https://api.dcycle.io/v2/webhook-endpoints" \
-H "x-api-key: ${DCYCLE_API_KEY}" \
-H "x-organization-id: ${DCYCLE_ORG_ID}" \
-H "Content-Type: application/json" \
-d '{
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
}'
import os
import requests
response = requests.post(
"https://api.dcycle.io/v2/webhook-endpoints",
headers={
"x-api-key": os.environ["DCYCLE_API_KEY"],
"x-organization-id": os.environ["DCYCLE_ORG_ID"],
},
json={
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
},
timeout=30,
)
response.raise_for_status()
print(response.status_code, response.json())
const axios = require('axios');
const response = await axios.post('https://api.dcycle.io/v2/webhook-endpoints', {
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
]
}, {
headers: {
'x-api-key': process.env.DCYCLE_API_KEY,
'x-organization-id': process.env.DCYCLE_ORG_ID,
},
});
console.log(response.status, response.data);
{
"id": "5c9e2f14-8b7a-4d3e-9f60-1a2b3c4d5e6f",
"url": "https://erp.example.com/dcycle/webhooks",
"description": "ERP integration",
"event_types": [
"ingest_job.finished"
],
"enabled": true,
"consecutive_failures": 0,
"disabled_reason": null,
"created_at": "2026-10-01T09:12:44.512031",
"updated_at": "2026-10-01T09:12:44.512031",
"secret": "whsec_kq3v0VJ9pX2rT7mB4nL8dH1sF6gW5yC0eA3uZ9iO2tQ"
}
Request
Headers
string
required
API key of an organization admin.Example:
sk_live_1234567890abcdefstring
required
The organization that owns the endpoints.Example:
a8315ef3-dd50-43f8-b7ce-d839e68d51fastring
required
Must be
application/jsonBody Parameters
string
required
HTTPS URL, up to 2,048 characters, that resolves to a public address. See URL requirements.Example:
"https://erp.example.com/dcycle/webhooks"array[string]
required
Events to receive, at least one. Available values:
ingest_job.finished.string | null
Up to 255 characters, to recognize the endpoint.
boolean
default:"true"
Create it disabled to set it up before it starts receiving.
Response
The endpoint and its secret (201 Created):
uuid
Endpoint id.
string
Where the events are sent.
string | null
Free text to recognize the endpoint.
array[string]
Subscribed events. Available values:
ingest_job.finished.boolean
Disabled endpoints receive nothing.
integer
Deliveries in a row that ended
failed. At 5 the endpoint is disabled.string | null
TOO_MANY_FAILURES when Dcycle disabled the endpoint; null otherwise.datetime
UTC.
datetime
UTC.
string
Signing secret (
whsec_…). Shown only in this response: store it to verify signatures.Common Errors
401 Unauthorized
Missing or invalid API key.403 Forbidden
ORG_ADMIN_REQUIRED: only organization admins can manage webhook endpoints. LOGGED_USER_NOT_MEMBER: the API key’s user is not a member of the organization.
422 Unprocessable Entity
The body is invalid, in the standard validation format. The URL must usehttps, point to a public host and carry no
credentials; event_types needs at least one subscribable event.
{
"detail": [
{ "loc": ["body", "url"], "msg": "Value error, The URL must point to a public host", "type": "value_error" }
]
}
Related Endpoints
Send Test Event
Check it end to end
Webhooks
Events, signatures and retries
Was this page helpful?