cURL
curl -sS \
-X POST \
-H 'Authorization: Bearer $OXI_SK' \
-H 'Content-Type: application/json' \
-d '{"name":"Production webhook","url":"https://example.com/0xinsider/webhook","event_types":["whale_trades_inserted"]}' \
'https://api.0xinsider.com/api/v1/webhooks'import requests
url = "https://api.0xinsider.com/api/v1/webhooks"
payload = {
"name": "Production webhook",
"url": "https://example.com/0xinsider/webhook",
"event_types": ["whale_trades_inserted"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Production webhook',
url: 'https://example.com/0xinsider/webhook',
event_types: ['whale_trades_inserted']
})
};
fetch('https://api.0xinsider.com/api/v1/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.0xinsider.com/api/v1/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([
'name' => 'Production webhook',
'url' => 'https://example.com/0xinsider/webhook',
'event_types' => [
'whale_trades_inserted'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.0xinsider.com/api/v1/webhooks"
payload := strings.NewReader("{\n \"name\": \"Production webhook\",\n \"url\": \"https://example.com/0xinsider/webhook\",\n \"event_types\": [\n \"whale_trades_inserted\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.0xinsider.com/api/v1/webhooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Production webhook\",\n \"url\": \"https://example.com/0xinsider/webhook\",\n \"event_types\": [\n \"whale_trades_inserted\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.0xinsider.com/api/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Production webhook\",\n \"url\": \"https://example.com/0xinsider/webhook\",\n \"event_types\": [\n \"whale_trades_inserted\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"object": "<string>",
"data": {
"id": 123,
"object": "<string>",
"name": "<string>",
"url": "<string>",
"event_types": [],
"verification_token_expires_at": "2023-11-07T05:31:56Z",
"failure_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"retry_policy": {
"max_attempts": 123,
"terminal_status": "<string>"
},
"verified_at": "2023-11-07T05:31:56Z",
"signing_secret": "<string>",
"verification": {
"token": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "Your previous request is still processing. Retry in a moment.",
"param": "Idempotency-Key",
"reason": "idempotency_in_progress"
},
"meta": {
"request_id": "req_example",
"cached": false,
"cost": 1
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "Idempotency-Key already used with a different request body",
"param": "Idempotency-Key"
},
"meta": {
"request_id": "req_example",
"cached": false,
"cost": 1
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}Webhooks
Create Webhook
Creates a pending HTTPS webhook destination. The response includes one-time signing_secret and verification.token values. Deliveries are not sent until the endpoint is verified. The subscribable event_types and their data payload shapes are described by GET /api/v1/webhooks/events; the per-endpoint delivery log is GET /api/v1/webhooks/{id}/deliveries. Four subscribable event types are Pro-only and only deliver to API keys on an active Pro subscription. whale_trades_inserted is one of them, gated by the same SubscriberScope::InsiderOnly mechanism as the other three (each type carries its own LiveEventContract entry; they share the scope value). The other three: wallet_grade_changed (data: wallet, trader_id, old_grade, new_grade, direction (upgrade|downgrade), skill_index, final_score, date) fires on a Pass-2 grade transition; insider_radar_flag_raised (data: trade_id, wallet, trader_id, condition_id, suspicion_score, track, side (yes|no), size, price) fires the first time a trade's suspicion score crosses the radar flag threshold; smart_money_flow_detected (data: condition_id, net_flow_usd, abs_net_flow_usd, dominant_side (yes|no), grade_floor (S|A|B|C|D|F), whale_trade_count, window) fires when a scheduled scanner detects ranked-trader net flow crossing a threshold (up or down) on a market. Delivery signing: each delivery request carries an HMAC-SHA256 signature in the x-0xinsider-signature header formatted as v1=<hex>, where <hex> is HMAC-SHA256(signing_secret, "<timestamp>.<raw_request_body>"). The signed <timestamp> is sent separately as x-0xinsider-timestamp (unix seconds). To verify a delivery: read x-0xinsider-timestamp, reject it if it differs from the current time by more than 300 seconds, recompute v1=<hex> over "<timestamp>.<raw_body>" with your signing_secret, and compare against x-0xinsider-signature using a constant-time comparison. Each delivery also carries x-0xinsider-event-id, x-0xinsider-event-type, x-0xinsider-delivery-id, and x-0xinsider-delivery-attempt headers.
POST
/
api
/
v1
/
webhooks
cURL
curl -sS \
-X POST \
-H 'Authorization: Bearer $OXI_SK' \
-H 'Content-Type: application/json' \
-d '{"name":"Production webhook","url":"https://example.com/0xinsider/webhook","event_types":["whale_trades_inserted"]}' \
'https://api.0xinsider.com/api/v1/webhooks'import requests
url = "https://api.0xinsider.com/api/v1/webhooks"
payload = {
"name": "Production webhook",
"url": "https://example.com/0xinsider/webhook",
"event_types": ["whale_trades_inserted"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Production webhook',
url: 'https://example.com/0xinsider/webhook',
event_types: ['whale_trades_inserted']
})
};
fetch('https://api.0xinsider.com/api/v1/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.0xinsider.com/api/v1/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([
'name' => 'Production webhook',
'url' => 'https://example.com/0xinsider/webhook',
'event_types' => [
'whale_trades_inserted'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.0xinsider.com/api/v1/webhooks"
payload := strings.NewReader("{\n \"name\": \"Production webhook\",\n \"url\": \"https://example.com/0xinsider/webhook\",\n \"event_types\": [\n \"whale_trades_inserted\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.post("https://api.0xinsider.com/api/v1/webhooks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Production webhook\",\n \"url\": \"https://example.com/0xinsider/webhook\",\n \"event_types\": [\n \"whale_trades_inserted\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.0xinsider.com/api/v1/webhooks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Production webhook\",\n \"url\": \"https://example.com/0xinsider/webhook\",\n \"event_types\": [\n \"whale_trades_inserted\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"object": "<string>",
"data": {
"id": 123,
"object": "<string>",
"name": "<string>",
"url": "<string>",
"event_types": [],
"verification_token_expires_at": "2023-11-07T05:31:56Z",
"failure_count": 123,
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"retry_policy": {
"max_attempts": 123,
"terminal_status": "<string>"
},
"verified_at": "2023-11-07T05:31:56Z",
"signing_secret": "<string>",
"verification": {
"token": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "Your previous request is still processing. Retry in a moment.",
"param": "Idempotency-Key",
"reason": "idempotency_in_progress"
},
"meta": {
"request_id": "req_example",
"cached": false,
"cost": 1
}
}{
"object": "error",
"error": {
"code": "bad_request",
"message": "Idempotency-Key already used with a different request body",
"param": "Idempotency-Key"
},
"meta": {
"request_id": "req_example",
"cached": false,
"cost": 1
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}{
"object": "<string>",
"error": {
"message": "<string>",
"doc_url": "<string>",
"param": "<string>",
"retry_at": "2023-11-07T05:31:56Z"
},
"meta": {
"request_id": "<string>",
"cached": true,
"cost": 123,
"cache_age_s": 123,
"category_skill_model_version": "<string>",
"category_skill_taxonomy_version": "<string>",
"category_skill_platform": "<string>",
"category_skill_scope": "<string>",
"category_skill_source_coverage": "<string>",
"category_skill_observation_started_at": "2023-11-07T05:31:56Z",
"category_skill_model_operationally_degraded": true,
"category_skill_status_counts": {
"live": 1,
"insufficient": 1,
"stale": 1,
"unknown": 1,
"degraded": 1
},
"category_skill_base_payload_hash": "<string>",
"category_skill_enriched_base_payload_hash": "<string>"
}
}Register an HTTPS endpoint to receive webhook events as they happen. The endpoint starts in
The response includes a one-time
pending_verification and must be verified before deliveries begin.
curl -H "Authorization: Bearer $OXINSIDER_API_KEY" \
-H "Idempotency-Key: webhook-create-2026-06-01" \
-H "Content-Type: application/json" \
-d '{
"name": "Production webhook",
"url": "https://api.yourapp.com/webhooks/0xinsider",
"event_types": ["whale_trades_inserted"]
}' \
"https://api.0xinsider.com/api/v1/webhooks"
signing_secret and a verification.token. Copy the secret now. You can’t retrieve it later. Use it to verify the x-0xinsider-signature header on every delivery; see the Webhooks guide. Then send the verification token to Verify Webhook to activate the endpoint. If the secret leaks, rotate it.
Send Idempotency-Key when retrying after a timeout. The same key with the same body returns the original webhook; the same key with a different body returns 422.Authorizations
API key authentication. Send your key in the Authorization header as Bearer oxi_sk_live_.... Live keys require an active Pro subscription and return live data.
Headers
Optional safe-retry key. Reuse the same value only when retrying the exact same mutation request body; a different body returns 422 and an in-flight matching request returns 409.
Required string length:
1 - 255Body
application/json
Maximum string length:
100Public HTTPS callback URL. Local/private/internal targets are rejected.
Minimum array length:
1Available options:
whale_trades_inserted, live_sports_updated, whale_trader_synced, large_positions_updated, wallet_grade_changed, insider_radar_flag_raised, smart_money_flow_detected Was this page helpful?
⌘I