Skip to main content
POST
/
webhooks
Create new webhook subscription
curl --request POST \
  --url https://api.smokeball.com/webhooks \
  --header 'Authorization: <api-key>' \
  --header 'Content-Type: application/json-patch+json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "key": "da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262",
  "name": "Listen to matter and contact changes",
  "eventTypes": [
    "matter.updated",
    "contact.created"
  ],
  "eventNotificationUrl": "http://yourdomain.com/notify"
}
'
import requests

url = "https://api.smokeball.com/webhooks"

payload = {
"key": "da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262",
"name": "Listen to matter and contact changes",
"eventTypes": ["matter.updated", "contact.created"],
"eventNotificationUrl": "http://yourdomain.com/notify"
}
headers = {
"x-api-key": "<api-key>",
"Authorization": "<api-key>",
"Content-Type": "application/json-patch+json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {
'x-api-key': '<api-key>',
Authorization: '<api-key>',
'Content-Type': 'application/json-patch+json'
},
body: JSON.stringify({
key: 'da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262',
name: 'Listen to matter and contact changes',
eventTypes: ['matter.updated', 'contact.created'],
eventNotificationUrl: 'http://yourdomain.com/notify'
})
};

fetch('https://api.smokeball.com/webhooks', 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://api.smokeball.com/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'key' => 'da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262',
'name' => 'Listen to matter and contact changes',
'eventTypes' => [
'matter.updated',
'contact.created'
],
'eventNotificationUrl' => 'http://yourdomain.com/notify'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json-patch+json",
"x-api-key: <api-key>"
],
]);

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

curl_close($curl);

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

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

func main() {

url := "https://api.smokeball.com/webhooks"

payload := strings.NewReader("{\n \"key\": \"da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262\",\n \"name\": \"Listen to matter and contact changes\",\n \"eventTypes\": [\n \"matter.updated\",\n \"contact.created\"\n ],\n \"eventNotificationUrl\": \"http://yourdomain.com/notify\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")

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

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

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.smokeball.com/webhooks")
.header("x-api-key", "<api-key>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"key\": \"da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262\",\n \"name\": \"Listen to matter and contact changes\",\n \"eventTypes\": [\n \"matter.updated\",\n \"contact.created\"\n ],\n \"eventNotificationUrl\": \"http://yourdomain.com/notify\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.smokeball.com/webhooks")

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

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"key\": \"da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262\",\n \"name\": \"Listen to matter and contact changes\",\n \"eventTypes\": [\n \"matter.updated\",\n \"contact.created\"\n ],\n \"eventNotificationUrl\": \"http://yourdomain.com/notify\"\n}"

response = http.request(request)
puts response.read_body
{
  "id": "<string>",
  "href": "<string>",
  "relation": "<string>",
  "method": "GET",
  "self": {
    "id": "<string>",
    "href": "<string>",
    "relation": "<string>",
    "method": "GET"
  },
  "accountId": "da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262",
  "name": "Listen to matter and contact changes",
  "eventTypes": [
    "matter.updated",
    "contact.created"
  ],
  "eventNotificationUrl": "http://yourdomain.com/notify",
  "createdDateUtc": "2022-04-23T14:00:00Z",
  "updatedDateUtc": "2022-04-23T14:00:00Z",
  "lastUpdated": 637847425252027400
}
{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}

Authorizations

x-api-key
string
header
required
Authorization
string
header
required

Body

key
string | null

Unique key used for creating signature header in webhook notification requests.

Example:

"da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262"

name
string | null

Name or description of the webhook subscription.

Example:

"Listen to matter and contact changes"

eventTypes
string[] | null

The event types that the webhook subscription should be subscribed to.

Example:
["matter.updated", "contact.created"]
eventNotificationUrl
string | null

The uri to notify when an event has occurred.

Example:

"http://yourdomain.com/notify"

Response

When request is successful. Returns the new webhook subscriptions.

id
string | null
href
string | null
relation
string | null
method
string | null
default:GET
self
object | null
accountId
string | null

Unique identifier of the associated account.

Example:

"da4e7fd1-5394-4ca9-b1c6-e18c4e2bf262"

name
string | null

Name or description of the subscription.

Example:

"Listen to matter and contact changes"

eventTypes
string[] | null

The event types that the webhook subscription is subscribed to.

Example:
["matter.updated", "contact.created"]
eventNotificationUrl
string | null

The uri to notify when an event has occurred.

Example:

"http://yourdomain.com/notify"

createdDateUtc
string<date-time>

The webhook subscription creation date.

Example:

"2022-04-23T14:00:00Z"

updatedDateUtc
string<date-time>

The webhook subscription last updated date.

Example:

"2022-04-23T14:00:00Z"

lastUpdated
integer<int64>

Last updated timestamp

Example:

637847425252027400