GET
/
v1
/
webhooks
/
{webhook_id}
Get a webhook
curl --request GET \
  --url https://platform.jobbit.uk/v1/webhooks/{webhook_id} \
  --header 'Authorization: Bearer <token>'
import requests

url = "https://platform.jobbit.uk/v1/webhooks/{webhook_id}"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.text)
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://platform.jobbit.uk/v1/webhooks/{webhook_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://platform.jobbit.uk/v1/webhooks/{webhook_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://platform.jobbit.uk/v1/webhooks/{webhook_id}"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://platform.jobbit.uk/v1/webhooks/{webhook_id}")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://platform.jobbit.uk/v1/webhooks/{webhook_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "id": "wh_q8k2m4x7c1v9b3n5z6a0",
  "url": "https://hooks.kentphysio.co.uk/jobbit",
  "events": [
    "deployment.succeeded",
    "deployment.failed",
    "balance.low"
  ],
  "description": "Kent Physio deploy alerts",
  "balance_below": "250",
  "key_id": "k3x9m2q7w1za",
  "active": true,
  "created_at": "2026-11-05T14:00:00+00:00",
  "secret": "whsec_5f0c9d2a7b1e4c63a8d40f9e12b7c5a3d6e8f0a14b2c7d9e"
}
{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "webhook_not_found",
"message": "no such webhook",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}
{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}

Authorizations

Authorization
string
header
required

An API key from Settings → API keys, sent as Authorization: Bearer jb_live_…

Path Parameters

webhook_id
string
required

The webhook id.

Required string length: 23
Pattern: ^wh_[a-z0-9]{20}$

Response

The webhook.

id
string
required

The webhook id.

Pattern: ^wh_[a-z0-9]{20}$
url
string<uri>
required

Where events are sent.

events
enum<string>[]
required

The events it receives.

Available options:
agent_task.finished,
deployment.succeeded,
deployment.failed,
balance.low,
automation_run.finished
key_id
string
required

The key that made the webhook. The webhook works only while this key does, and only hears about the apps and workspaces the key may see.

active
boolean
required

False once the key has been revoked or has expired.

created_at
string<date-time>
required

When it was made.

secret
string
required

The signing secret, starting with whsec_. Use it to check X-Jobbit-Signature on each delivery. Keep it private.

description
string

Your note.

balance_below
string | null

The balance.low threshold in credits. Null if the webhook does not take balance.low.