Skip to main content
POST
/
api
/
v1
/
enterprise
/
eudr
/
webhooks
/
{webhookId}
/
ping
Python
import agribackup
from agribackup.rest import ApiException

# Initialize Client
configuration = agribackup.Configuration(host="https://live.agribackup.com/api/v1")
configuration.api_key['ApiKeyAuth'] = 'sk_live_YOUR_API_KEY'

with agribackup.ApiClient(configuration) as api_client:
    try:
        api_instance = agribackup.EnterpriseWebhooksApi(api_client)
        response = api_instance.ping_webhook()
        print(response)
    except ApiException as e:
        print("Exception when calling API: %s\n" % e)
import { AgriBackupClient } from '@agribackup/sdk';

// Initialize Client
const client = new AgriBackupClient({
apiKey: 'sk_live_YOUR_API_KEY',
baseUrl: 'https://live.agribackup.com/api/v1'
});

async function execute() {
try {
const response = await client.webhooks.pingWebhook();
console.log(response);
} catch (error) {
console.error(error);
}
}
import com.agribackup.client.*;
import com.agribackup.client.api.*;
import com.agribackup.client.model.*;

public class Example {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setBasePath("https://live.agribackup.com/api/v1");
defaultClient.setApiKey("sk_live_YOUR_API_KEY");

EnterpriseWebhooksApi apiInstance = new EnterpriseWebhooksApi(defaultClient);
try {
Object result = apiInstance.pingWebhook();
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling API: " + e.getResponseBody());
}
}
}
using System;
using System.Threading.Tasks;
using AgriBackup.SDK.Api;
using AgriBackup.SDK.Client;
using AgriBackup.SDK.Model;

class Program {
static async Task Main() {
Configuration config = new Configuration();
config.BasePath = "https://live.agribackup.com/api/v1";
config.AddApiKey("ApiKeyAuth", "sk_live_YOUR_API_KEY");

var apiInstance = new EnterpriseWebhooksApi(config);
try {
var result = await apiInstance.PingWebhookAsync();
Console.WriteLine(result);
} catch (ApiException e) {
Console.WriteLine("Exception when calling API: " + e.Message);
}
}
}
curl --request POST \
--url https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/{webhookId}/ping \
--header 'X-API-Key: <api-key>'
const options = {method: 'POST', headers: {'X-API-Key': '<api-key>'}};

fetch('https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/{webhookId}/ping', 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://live.agribackup.com/api/v1/enterprise/eudr/webhooks/{webhookId}/ping",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)

func main() {

url := "https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/{webhookId}/ping"

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

req.Header.Add("X-API-Key", "<api-key>")

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

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

fmt.Println(string(body))

}
require 'uri'
require 'net/http'

url = URI("https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/{webhookId}/ping")

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

request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'

response = http.request(request)
puts response.read_body
{}
Dispatches a mock webhook.ping event to the registered callback URL, signed with the webhook’s current HMAC-SHA256 signing secret and delivered via the standard X-AgriBackup-Signature header. This lets your security engineering team verify that signature validation is correctly implemented before your integration goes live — no compliance data is processed or modified. The ping payload follows the same structure as all production events, including eventType, eventId, timestamp, and attempt fields. Your endpoint should respond with HTTP 200 to acknowledge receipt.

What to Verify

Use the ping to confirm the following in your webhook handler:
  • The raw request body is read as bytes before any parsing.
  • HMAC-SHA256(signingSecret, rawBody) is computed and hex-encoded correctly.
  • The computed hash is compared to the X-AgriBackup-Signature header using a constant-time comparison.
  • Your server returns 200 OK within the expected timeout window.
import requests

webhook_id = "wh_12345"
headers = {"X-API-Key": "sk_live_YOUR_API_KEY"}

response = requests.post(
    f"https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/{webhook_id}/ping",
    headers=headers,
)
print(response.status_code)
const webhookId = "wh_12345";
const response = await fetch(
  `https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/${webhookId}/ping`,
  {
    method: "POST",
    headers: { "X-API-Key": "sk_live_YOUR_API_KEY" },
  }
);
console.log(response.status);
curl -X POST \
  "https://live.agribackup.com/api/v1/enterprise/eudr/webhooks/wh_12345/ping" \
  -H "X-API-Key: sk_live_YOUR_API_KEY"

Authorizations

X-API-Key
string
header
required

Enterprise API Key provided via the AgriBackup developer console.

Path Parameters

webhookId
string
required

Response

200 - */*

OK

The response is of type object.