Set Webhook Endpoint
curl --request PUT \
--url https://api.zinc.com/webhooks/endpoint \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://example.com/zinc/webhook"
}
'import requests
url = "https://api.zinc.com/webhooks/endpoint"
payload = { "url": "https://example.com/zinc/webhook" }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: 'https://example.com/zinc/webhook'})
};
fetch('https://api.zinc.com/webhooks/endpoint', 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.zinc.com/webhooks/endpoint",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com/zinc/webhook'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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.zinc.com/webhooks/endpoint"
payload := strings.NewReader("{\n \"url\": \"https://example.com/zinc/webhook\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.zinc.com/webhooks/endpoint")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com/zinc/webhook\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/webhooks/endpoint")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://example.com/zinc/webhook\"\n}"
response = http.request(request)
puts response.read_body{
"webhook_url": "<string>",
"webhook_secret": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Webhooks
Set Webhook Endpoint
Register or replace the URL Zinc POSTs this account’s order and return events to.
PUT
/
webhooks
/
endpoint
Set Webhook Endpoint
curl --request PUT \
--url https://api.zinc.com/webhooks/endpoint \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://example.com/zinc/webhook"
}
'import requests
url = "https://api.zinc.com/webhooks/endpoint"
payload = { "url": "https://example.com/zinc/webhook" }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: 'https://example.com/zinc/webhook'})
};
fetch('https://api.zinc.com/webhooks/endpoint', 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.zinc.com/webhooks/endpoint",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com/zinc/webhook'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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.zinc.com/webhooks/endpoint"
payload := strings.NewReader("{\n \"url\": \"https://example.com/zinc/webhook\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.zinc.com/webhooks/endpoint")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://example.com/zinc/webhook\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/webhooks/endpoint")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://example.com/zinc/webhook\"\n}"
response = http.request(request)
puts response.read_body{
"webhook_url": "<string>",
"webhook_secret": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Registers the single URL every order and return event for this account is POSTed to.
A signing secret is generated on first registration and returned in the response. Replacing the URL later keeps the existing secret, so moving your endpoint never invalidates the verification you already have in place.
Store
curl -X PUT https://api.zinc.com/webhooks/endpoint \
-H "Authorization: Bearer ***" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/zinc/webhook"}'
This is how an API-key-only caller registers a webhook. An agent whose key came from
POST /agent/orders has no dashboard login, so this endpoint is its only route to event delivery.webhook_secret and check the X-Webhook-Signature header on every delivery — see Webhooks.Authorizations
Zinc API key (Bearer zn_...)
Headers
Body
application/json
Body for PUT /webhooks/endpoint: the single URL Zinc delivers to.
Absolute http(s) URL that receives order and return events.
Example:
"https://example.com/zinc/webhook"

