curl --request PATCH \
--url https://api-sb.meld.io/notifications/webhooks/{webhookProfileId} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"eventTypes": [],
"eventVersion": "<string>",
"name": "<string>",
"url": "<string>"
}
'import requests
url = "https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}"
payload = {
"eventTypes": [],
"eventVersion": "<string>",
"name": "<string>",
"url": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({eventTypes: [], eventVersion: '<string>', name: '<string>', url: '<string>'})
};
fetch('https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}', 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-sb.meld.io/notifications/webhooks/{webhookProfileId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'eventTypes' => [
],
'eventVersion' => '<string>',
'name' => '<string>',
'url' => '<string>'
]),
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-sb.meld.io/notifications/webhooks/{webhookProfileId}"
payload := strings.NewReader("{\n \"eventTypes\": [],\n \"eventVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"eventTypes\": [],\n \"eventVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"eventTypes\": [],\n \"eventVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"accountId": "<string>",
"eventTypes": [
"<string>"
],
"eventVersion": "<string>",
"id": "<string>",
"key": "<string>",
"name": "<string>",
"secret": "<string>",
"status": "ACTIVE",
"url": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Bad request",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00",
"errors": [
"[Meld-Version] is invalid"
]
}{
"code": "UNAUTHORIZED",
"message": "Access denied",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "FORBIDDEN",
"message": "Access denied",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "NOT_FOUND",
"message": "Resource not found",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "UNEXPECTED_ERROR",
"message": "Unexpected error",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}Update an existing webhook profile
curl --request PATCH \
--url https://api-sb.meld.io/notifications/webhooks/{webhookProfileId} \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"eventTypes": [],
"eventVersion": "<string>",
"name": "<string>",
"url": "<string>"
}
'import requests
url = "https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}"
payload = {
"eventTypes": [],
"eventVersion": "<string>",
"name": "<string>",
"url": "<string>"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({eventTypes: [], eventVersion: '<string>', name: '<string>', url: '<string>'})
};
fetch('https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}', 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-sb.meld.io/notifications/webhooks/{webhookProfileId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'eventTypes' => [
],
'eventVersion' => '<string>',
'name' => '<string>',
'url' => '<string>'
]),
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-sb.meld.io/notifications/webhooks/{webhookProfileId}"
payload := strings.NewReader("{\n \"eventTypes\": [],\n \"eventVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"eventTypes\": [],\n \"eventVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sb.meld.io/notifications/webhooks/{webhookProfileId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"eventTypes\": [],\n \"eventVersion\": \"<string>\",\n \"name\": \"<string>\",\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"accountId": "<string>",
"eventTypes": [
"<string>"
],
"eventVersion": "<string>",
"id": "<string>",
"key": "<string>",
"name": "<string>",
"secret": "<string>",
"status": "ACTIVE",
"url": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Bad request",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00",
"errors": [
"[Meld-Version] is invalid"
]
}{
"code": "UNAUTHORIZED",
"message": "Access denied",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "FORBIDDEN",
"message": "Access denied",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "NOT_FOUND",
"message": "Resource not found",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}{
"code": "UNEXPECTED_ERROR",
"message": "Unexpected error",
"requestId": "01JB2K7C9XQZ4M8N2P5R6T3V",
"timestamp": "2026-08-14T09:41:22.482+00:00"
}Authorizations
Headers
Dated API version to use for this request, e.g. 2026-02-03.
"2026-02-03"
Path Parameters
Unique identifier for the webhook profile
Body
Event types that will be sent to the URL. If empty, then all events will be sent to the URL.
Reference Webhook events
TRANSACTION_CRYPTO_PENDING, TRANSACTION_CRYPTO_FAILED, TRANSACTION_CRYPTO_TRANSFERRING, TRANSACTION_CRYPTO_COMPLETE, TRANSACTION_FIAT_CREATED, TRANSACTION_FIAT_UPDATED, BANK_LINKING_CONNECTION_COMPLETED, BANK_LINKING_CONNECTION_DELETED, BANK_LINKING_CONNECTION_STATUS_CHANGE, BANK_LINKING_ACCOUNTS_ADDED, BANK_LINKING_ACCOUNTS_UPDATING, BANK_LINKING_ACCOUNTS_UPDATED, BANK_LINKING_ACCOUNTS_REMOVED, BANK_LINKING_TRANSACTIONS_AGGREGATED, BANK_LINKING_HISTORICAL_TRANSACTIONS_AGGREGATED, BANK_LINKING_NEW_ACCOUNTS_AVAILABLE, CUSTOMER_KYC_STATUS_CHANGE, TEST, WEBHOOK_TEST Version of webhooks sent to the URL.
Reference Webhook version
Display name
Status
ACTIVE, DISABLED URL where webhooks will be sent
Response
Webhook profile has been updated
Account Id
Event types that will be sent to the URL. If empty, then all events will be sent to the URL.
Reference Webhook events
Version of webhooks sent to the URL.
Reference Webhook version
Unique identifier
Unique key corresponding to a webhook profile's position in a paginated list of results. Only present if this webhook profile is in a paginated response.
Reference Pagination
Display name
Secret used to validate authenticity of a webhook.
Reference Webhook authentication
Current status
ACTIVE, DISABLED URL where webhooks will be sent