Add a webhook (admin); the secret is returned once
POST
/webhooks
const url = 'http://localhost:8100/api/v1/webhooks';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"url":"https://example.com","events":["issue.created"],"project":"example","secret":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:8100/api/v1/webhooks \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "url": "https://example.com", "events": [ "issue.created" ], "project": "example", "secret": "example" }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
url
required
string format: uri
events
required
Array<string>
project
Limit to one project key
string
secret
string
Responses
Section titled “Responses”Created
Media typeapplication/json
object
data
object
id
integer
url
string format: uri
events
Array<string>
project
string | null
active
boolean
last_status
integer | null
last_delivered_at
string | null format: date-time
secret
string
Example generated
{ "data": { "id": 1, "url": "https://example.com", "events": [ "example" ], "project": "example", "active": true, "last_status": 1, "last_delivered_at": "2026-04-15T12:00:00Z", "secret": "example" }}