{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "https://example.com/hooks/0xarchive",
"description": "Trading desk alerts",
"format": "json",
"status": "active",
"consecutive_failures": 0,
"created_at": "2023-11-07T05:31:56Z",
"secret": "whsec_6f1c0b2a4d8e5f3a9c7b1e0d2f4a6c8b1d3e5f7a9c0b2d4e6f8a1c3b5d7e9f0a"
},
"note": "Store the secret now; it is not shown again."
}
Create a webhook endpoint
0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.
Selects the 2026-10 response contract. Send 2026-10-01; any dated version on or after it selects the same shapes. Without the header every response keeps its existing shape. With it:
The data quality routes, /v1/status/coverage and /v1/symbols answer the standard {success, data, meta} envelope.
Record times that are integer milliseconds by default become RFC 3339 UTC strings with millisecond precision, and the integer moves to a *_ms field: L4 resting-order timestamp (timestamp_ms), CVD buckets, HIP-3 oracle reads, Lighter and Lighter on Robinhood Chain liquidations and liquidation volume. Levels and trigger-levels snapshot_ts become RFC 3339 with snapshot_ts_ms.
Error bodies carry the contract error_code names: invalid_parameter instead of invalid_query_params and invalid_path_params, historical_depth_exceeded instead of history_window_exceeded, and historical_range_exceeded instead of request_range_exceeded; a malformed cursor that fails to parse answers 400 invalid_cursor instead of invalid_query_params. With 0xArchive-Version: 2026-10-01, malformed cursors on trades, liquidations, L2 and L4 diffs, order history, TP/SL and order-flow routes answer 400 invalid_cursor. Without the header, the first six route families treat a malformed cursor as no cursor and return the first page; order flow answers 400 invalid_query_params. Malformed trade time inputs answer 400 invalid_time_range with the header and 400 invalid_query_params without it.
The response echoes the selected version in its own 0xArchive-Version header.
Delivery format. Omit it to detect from the URL: a Discord webhook URL becomes discord, a Slack incoming-webhook URL becomes slack, anything else json. Case-insensitive. Telegram endpoints are created by connecting a chat, not here.
Available options:
json,
discord,
slack
Example:
"json"
Callbacks
POST
{$request.body#/url}delivery
Body
application/json
Body of a webhook delivery to a json endpoint. The same id is sent on every retry and redelivery of the event; use it (or the 0xa-event-id header) to deduplicate. Delivery is at least once.
How long after the underlying occurrence the event was detected, in milliseconds. Null when the occurrence carries no timestamp; absent on test, export and some operational events.
A newly created endpoint, including the signing secret. This is one of the two responses that carry the secret; the other is a rotation. Store it now, because it is not shown again.
How deliveries are rendered. json: the signed JSON envelope (WebhookDeliveryEnvelope). discord and slack: a chat message in that service's webhook format, still signed. telegram: a message posted to a connected Telegram chat; Telegram endpoints are created by connecting a chat, not by URL, and their deliveries carry no signature.
active is serving. auto_disabled means a long run of failed deliveries switched it off; bring it back with the enable route, which also resets the failure count. disabled is reserved.
{"docsConfig":{"theme":"palm","$schema":"https://mintlify.com/docs.json","name":"0xArchive","description":"Hyperliquid and Lighter market data through the REST API, WebSocket, Webhook Alerts, and Bulk Exports. Start with your first request on the Free plan.","colors":{"primary":"#15803D","light":"#21C55E","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/0xarchive-e895b8e7/_8ck-oUq6ufsot88/logo-light.svg?fit=max\u0026auto=format\u0026n=_8ck-oUq6ufsot88\u0026q=85\u0026s=125ef51299181bd38460b33344f30ff5","dark":"https://mintcdn.com/0xarchive-e895b8e7/_8ck-oUq6ufsot88/logo-dark.svg?fit=max\u0026auto=format\u0026n=_8ck-oUq6ufsot88\u0026q=85\u0026s=829b1f9b3638e20a5c6bc6032ab00025","href":"https://0xarchive.io/?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=logo_home"},"favicon":"https://mintcdn.com/0xarchive-e895b8e7/_8ck-oUq6ufsot88/favicon.svg?fit=max\u0026auto=format\u0026n=_8ck-oUq6ufsot88\u0026q=85\u0026s=df84c8913362b83bdf0443dd4b49a717","api":{"openapi":{"source":"openapi.json","directory":"api-reference"},"params":{"expanded":"all"},"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","python","javascript","go"],"prefill":true,"autogenerate":true},"url":"full"},"appearance":{"default":"dark","strict":false},"navbar":{"links":[{"href":"https://0xarchive.io/pricing?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=navbar_pricing","label":"Pricing"},{"href":"https://0xarchive.io/status?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=navbar_status","label":"Status"},{"href":"https://0xarchive.io/changelog?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=navbar_changelog","label":"Changelog"},{"href":"https://github.com/0xArchiveIO","label":"GitHub"}],"primary":{"type":"button","label":"Dashboard","href":"https://0xarchive.io/dashboard?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=navbar_dashboard"}},"footer":{"socials":{"x":"https://x.com/0xarchiveIo","github":"https://github.com/0xArchiveIO","telegram":"https://t.me/archivedotio","linkedin":"https://www.linkedin.com/company/0xarchive"},"links":[{"header":"Product","items":[{"label":"Pricing","href":"https://0xarchive.io/pricing?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_pricing"},{"label":"Status","href":"https://0xarchive.io/status?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_status"},{"label":"Data Catalog","href":"https://0xarchive.io/data?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_data_catalog"},{"label":"Dashboard","href":"https://0xarchive.io/dashboard?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_dashboard"}]},{"header":"Developers","items":[{"label":"Data rights","href":"/data-rights"},{"label":"AI clients","href":"/ai-clients"},{"label":"Coding agents","href":"/coding-agents"},{"label":"Choose an interface","href":"/tooling"}]},{"header":"Resources","items":[{"label":"Reference","href":"/reference"},{"label":"OpenAPI","href":"/openapi"},{"label":"Recommendations","href":"/recommendations"},{"label":"Free crypto data API","href":"/free-crypto-data-api"},{"label":"Sitemap","href":"/sitemap"},{"label":"llms.txt","href":"/llms.txt"},{"label":"llms-full.txt","href":"/llms-full.txt"},{"label":"Resources","href":"https://0xarchive.io/resources?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_blog"}]},{"header":"Company","items":[{"label":"Home","href":"https://0xarchive.io/?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_home"},{"label":"Contact","href":"https://0xarchive.io/contact?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_contact"},{"label":"Terms","href":"https://0xarchive.io/terms?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_terms"},{"label":"Privacy","href":"https://0xarchive.io/privacy?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs_nav\u0026utm_content=footer_privacy"}]}]},"search":{"prompt":"Search routes, symbols, SDKs, WebSocket replay, and data quality"},"seo":{"metatags":{"canonical":"https://docs.0xarchive.io","og:site_name":"0xArchive Docs","og:type":"website","twitter:card":"summary_large_image","twitter:site":"@0xarchiveIo","google-site-verification":"Hpedp6bedqc3av1195euaGMwyFEVHcJhcyUY9YiMvTY"},"organization":{"id":"https://0xarchive.io/#organization","name":"0xArchive","legalName":"Archive Labs Inc.","url":"https://0xarchive.io/","logo":"https://0xarchive.io/logo-square-1024.png","sameAs":["https://x.com/0xarchiveIo","https://github.com/0xArchiveIO","https://t.me/archivedotio","https://www.linkedin.com/company/0xarchive/"]},"indexing":"all"},"fonts":{"family":"Geist","source":"fonts/geist-variable.woff2","format":"woff2"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":"github-dark"},"latex":true},"errors":{"404":{"redirect":false,"title":"Page not found","description":"Open the quickstart, REST reference, or search the docs for the route you need."}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","perplexity","cursor","vscode","windsurf","grok","devin","aistudio"],"display":"header"},"thumbnails":{"background":"https://mintcdn.com/0xarchive-e895b8e7/ZmnWL31Kq8lGIdPW/images/og-background.svg?fit=max\u0026auto=format\u0026n=ZmnWL31Kq8lGIdPW\u0026q=85\u0026s=802efd004c3811d20f873d5f00c5ef32"},"metadata":{"timestamp":true},"markdown":{"schema":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"0xarchive-e895b8e7","hasAudioNarration":false,"actualSubdomain":"0xarchive-e895b8e7","customDomains":["docs.0xarchive.io"],"gitSource":{"type":"github","owner":"0xarchiveio","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aea19b7fb19e826efc55a2b","collectionId":"d8b1f375-18ee-4c1c-9493-b62f9a952505","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aea19b7fb19e826efc55a2b"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aea19b7fb19e826efc55a2b","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"REST API","count":478},{"language":"default","tag":"OpenAPI and schemas","count":230},{"language":"default","tag":"Operation schemas","count":225},{"language":"default","tag":"Endpoint reference","count":213},{"language":"default","tag":"HIP-3","count":94},{"language":"default","tag":"Hyperliquid core","count":90},{"language":"default","tag":"Terminal","count":84},{"language":"default","tag":"Lighter","count":60},{"language":"default","tag":"Webhook Alerts","count":53},{"language":"default","tag":"HIP-4","count":52}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"[email protected]","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"styles.css","href":"/_mintlify/custom/0xarchive-e895b8e7/4b473e296a6c1d39/styles.css"}],"page":{"pagePath":"api-reference/webhooks--endpoints/create-a-webhook-endpoint","slug":"/api-reference/webhooks--endpoints/create-a-webhook-endpoint","pageMetadata":{"title":"Create a webhook endpoint","description":"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/endpoints","href":"/api-reference/webhooks--endpoints/create-a-webhook-endpoint","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,Info}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!Info)_missingMdxReference(`Info`,true);return _jsxs(_Fragment,{children:[_jsx(Info,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`API key required.`}),` Send `,_jsx(_components.code,{children:`X-API-Key`}),` with this request. See `,_jsx(_components.a,{href:`/rest-api/authentication`,children:`REST authentication`}),`.`]})}),`\n`,_jsx(_components.p,{children:_jsx(_components.a,{href:`/schemas/operations/create-webhook-endpoint`,children:`Operation schema`})}),`\n`,_jsx(Accordion,{title:`Shared request rules`,id:`shared-request-rules`,children:_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/rate-limits`,children:`Rate limits and credits`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/responses`,children:`HTTP responses and status codes`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.a,{href:`/errors`,children:`Errors and request IDs`})}),`\n`]})}),`\n`,_jsx(Accordion,{title:`Machine schema`,id:`machine-schema`,children:_jsxs(_components.p,{children:[_jsx(_components.a,{href:`/schemas/operations/create-webhook-endpoint`,children:`Open the generated operation schema`}),` for machine-readable request and response details.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":"github-dark"},"config":{},"pageMetadata":{"title":"Create a webhook endpoint","description":"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/endpoints","href":"/api-reference/webhooks--endpoints/create-a-webhook-endpoint","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/0xarchive-e895b8e7/7de7178c454c8311/analytics-delayed.js","/_mintlify/custom/0xarchive-e895b8e7/64d76990ea4d1101/ahrefs-analytics.js","/_mintlify/custom/0xarchive-e895b8e7/9c04a5e34ef7363a/assistant-ui.js","/_mintlify/custom/0xarchive-e895b8e7/ae934b733ebeac03/single-public-docs.js","/_mintlify/custom/0xarchive-e895b8e7/ab832e8be54292e5/webhooks-anchors.js"],"openApiReferenceData":{"operation":{"tags":["Webhooks - Endpoints"],"summary":"Create a webhook endpoint","description":"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.","operationId":"createWebhookEndpoint","requestBody":"9eb9f3a1-6282-44ea-99ee-747a7931a013","responses":{"200":"6bfe7f78-e185-4a1f-9667-e324a8bbdecd","400":"558093fc-d333-441b-ae87-4a3c29c007d0","401":"bcabd76a-9230-40eb-898e-55cb12125dcc","429":"93fd491e-0a47-4c8a-8d6b-189b62f0b118","default":"d6d379d0-5a37-4fd9-b11e-711fa2575ad6"},"callbacks":{"delivery":"65513046-ebc9-4838-993b-dd973b4d143d"},"x-hidden":true,"x-mint":{"content":"\u003cInfo>\n **API key required.** Send `X-API-Key` with this request. See [REST authentication](/rest-api/authentication).\n\u003c/Info>\n\n[Operation schema](/schemas/operations/create-webhook-endpoint)\n\n\u003cAccordion title=\"Shared request rules\">\n - [Rate limits and credits](/rate-limits)\n - [HTTP responses and status codes](/responses)\n - [Errors and request IDs](/errors)\n\u003c/Accordion>\n\n\u003cAccordion title=\"Machine schema\">\n [Open the generated operation schema](/schemas/operations/create-webhook-endpoint) for machine-readable request and response details.\n\u003c/Accordion>","metadata":{"description":"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes."}},"method":"post","type":"path","servers":["afa1230c-1573-4566-9e9a-40f758adb7f2"],"security":["b5f63b2d-d545-4c2d-99b7-ab24e07d269d"],"path":"/v1/webhooks/endpoints","baseUrlOptions":["https://api.0xarchive.io"],"title":"Create a webhook endpoint","codeSamples":[],"requestExampleLanguages":["bash","python","javascript","go"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.url":"https://example.com/hooks/0xarchive","body.description":"Trading desk alerts","body.format":"json"}],"urlDisplay":"full"},"dependencies":{"parameters":{"04beecee-6b23-49c6-86ca-9e3091c9d6b4":{"name":"0xArchive-Version","in":"header","required":false,"description":"Selects the 2026-10 response contract. Send `2026-10-01`; any dated version on or after it selects the same shapes. Without the header every response keeps its existing shape. With it:\n\n- The data quality routes, `/v1/status/coverage` and `/v1/symbols` answer the standard `{success, data, meta}` envelope.\n- Record times that are integer milliseconds by default become RFC 3339 UTC strings with millisecond precision, and the integer moves to a `*_ms` field: L4 resting-order `timestamp` (`timestamp_ms`), CVD buckets, HIP-3 oracle reads, Lighter and Lighter on Robinhood Chain liquidations and liquidation volume. Levels and trigger-levels `snapshot_ts` become RFC 3339 with `snapshot_ts_ms`.\n- Error bodies carry the contract `error_code` names: `invalid_parameter` instead of `invalid_query_params` and `invalid_path_params`, `historical_depth_exceeded` instead of `history_window_exceeded`, and `historical_range_exceeded` instead of `request_range_exceeded`; a malformed cursor that fails to parse answers 400 `invalid_cursor` instead of `invalid_query_params`. With `0xArchive-Version: 2026-10-01`, malformed cursors on trades, liquidations, L2 and L4 diffs, order history, TP/SL and order-flow routes answer 400 `invalid_cursor`. Without the header, the first six route families treat a malformed cursor as no cursor and return the first page; order flow answers 400 `invalid_query_params`. Malformed trade time inputs answer 400 `invalid_time_range` with the header and 400 `invalid_query_params` without it.\n\nThe response echoes the selected version in its own `0xArchive-Version` header.","schema":{"type":"string","enum":["2026-10-01"],"example":"2026-10-01","isRequired":false,"description":"Selects the 2026-10 response contract. Send `2026-10-01`; any dated version on or after it selects the same shapes. Without the header every response keeps its existing shape. With it:\n\n- The data quality routes, `/v1/status/coverage` and `/v1/symbols` answer the standard `{success, data, meta}` envelope.\n- Record times that are integer milliseconds by default become RFC 3339 UTC strings with millisecond precision, and the integer moves to a `*_ms` field: L4 resting-order `timestamp` (`timestamp_ms`), CVD buckets, HIP-3 oracle reads, Lighter and Lighter on Robinhood Chain liquidations and liquidation volume. Levels and trigger-levels `snapshot_ts` become RFC 3339 with `snapshot_ts_ms`.\n- Error bodies carry the contract `error_code` names: `invalid_parameter` instead of `invalid_query_params` and `invalid_path_params`, `historical_depth_exceeded` instead of `history_window_exceeded`, and `historical_range_exceeded` instead of `request_range_exceeded`; a malformed cursor that fails to parse answers 400 `invalid_cursor` instead of `invalid_query_params`. With `0xArchive-Version: 2026-10-01`, malformed cursors on trades, liquidations, L2 and L4 diffs, order history, TP/SL and order-flow routes answer 400 `invalid_cursor`. Without the header, the first six route families treat a malformed cursor as no cursor and return the first page; order flow answers 400 `invalid_query_params`. Malformed trade time inputs answer 400 `invalid_time_range` with the header and 400 `invalid_query_params` without it.\n\nThe response echoes the selected version in its own `0xArchive-Version` header.","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"A new delivery destination.","required":["url"],"properties":{"url":{"type":"string","format":"uri","description":"HTTPS destination that will receive deliveries. Destinations that resolve to a private or internal address are refused.","example":"https://example.com/hooks/0xarchive","isRequired":true,"uniqueKey":"url","typeLabel":"string\u003curi>"},"description":{"type":"string","description":"Your own label for the endpoint.","default":"","example":"Trading desk alerts","uniqueKey":"description","typeLabel":"string"},"format":{"type":"string","enum":["json","discord","slack"],"description":"Delivery format. Omit it to detect from the URL: a Discord webhook URL becomes `discord`, a Slack incoming-webhook URL becomes `slack`, anything else `json`. Case-insensitive. Telegram endpoints are created by connecting a chat, not here.","example":"json","uniqueKey":"format","typeLabel":"enum\u003cstring>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"url":"https://example.com/hooks/0xarchive","description":"Trading desk alerts","format":"json"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"6bfe7f78-e185-4a1f-9667-e324a8bbdecd":{"description":"The new endpoint and its signing secret","content":{"application/json":{"schema":{"type":"object","description":"API response containing a newly created endpoint and its signing secret.","properties":{"success":{"type":"boolean","example":true,"uniqueKey":"success","typeLabel":"boolean"},"data":{"type":"object","description":"A newly created endpoint, including the signing secret. This is one of the two responses that carry the secret; the other is a rotation. Store it now, because it is not shown again.","required":["id","url","description","format","status","consecutive_failures","created_at","secret"],"properties":{"id":{"type":"string","format":"uuid","description":"Endpoint identifier.","isRequired":true,"uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"url":{"type":"string","format":"uri","description":"HTTPS destination that receives deliveries.","example":"https://example.com/hooks/0xarchive","isRequired":true,"uniqueKey":"data.url","typeLabel":"string\u003curi>"},"description":{"type":"string","description":"Your own label for the endpoint.","example":"Trading desk alerts","isRequired":true,"uniqueKey":"data.description","typeLabel":"string"},"format":{"type":"string","enum":["json","discord","slack","telegram"],"description":"How deliveries are rendered. `json`: the signed JSON envelope (`WebhookDeliveryEnvelope`). `discord` and `slack`: a chat message in that service's webhook format, still signed. `telegram`: a message posted to a connected Telegram chat; Telegram endpoints are created by connecting a chat, not by URL, and their deliveries carry no signature.","example":"json","isRequired":true,"uniqueKey":"data.format","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["active","disabled","auto_disabled"],"description":"`active` is serving. `auto_disabled` means a long run of failed deliveries switched it off; bring it back with the enable route, which also resets the failure count. `disabled` is reserved.","example":"active","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"consecutive_failures":{"type":"integer","format":"int32","description":"Failed attempts since the last success. Resets to zero on a delivery that lands.","example":0,"isRequired":true,"uniqueKey":"data.consecutive_failures","typeLabel":"integer\u003cint32>"},"created_at":{"type":"string","format":"date-time","description":"When the endpoint was created.","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"},"secret":{"type":"string","description":"Signing secret for this endpoint. Every delivery is signed with it, and your receiver verifies the signature against it.","example":"whsec_6f1c0b2a4d8e5f3a9c7b1e0d2f4a6c8b1d3e5f7a9c0b2d4e6f8a1c3b5d7e9f0a","isRequired":true,"uniqueKey":"data.secret","typeLabel":"string"}},"uniqueKey":"data","typeLabel":"object"},"note":{"type":"string","description":"That the secret is shown once.","example":"Store the secret now; it is not shown again.","uniqueKey":"note","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"success":true,"data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","url":"https://example.com/hooks/0xarchive","description":"Trading desk alerts","format":"json","status":"active","consecutive_failures":0,"created_at":"2023-11-07T05:31:56Z","secret":"whsec_6f1c0b2a4d8e5f3a9c7b1e0d2f4a6c8b1d3e5f7a9c0b2d4e6f8a1c3b5d7e9f0a"},"note":"Store the secret now; it is not shown again."}}},"exampleType":"generated"}},"headers":{"0xArchive-Version":{"description":"The contract version the response was shaped with. Present only when the request sent `0xArchive-Version`.","schema":{"type":"string","enum":["2026-10-01"],"example":"2026-10-01"}}},"exampleType":"generated"},"558093fc-d333-441b-ae87-4a3c29c007d0":{"description":"Invalid request: a parameter, symbol, interval, cursor or time range failed validation. See `error_code`.","content":{"application/json":{"schema":{"type":"object","description":"Body of every non-2xx JSON response. `code` repeats the HTTP status, `error_code` is the stable machine-readable code (see `ErrorCode`), `error` is a human-readable message, and `request_id` identifies the request for support. Validation failures add `param` and, where the accepted set is fixed, `valid_values`. A 404 for a datatype the venue does not offer (`unsupported_for_venue`) adds `venue`, `datatype` and `available_on`; any other unknown path answers 404 `route_not_found`.","required":["success","code","error_code","error","request_id"],"properties":{"success":{"type":"boolean","enum":[false],"description":"Always `false` on an error.","isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"code":{"type":"integer","description":"HTTP status code.","example":400,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"error_code":{"type":"string","description":"Stable, machine-readable error code. Branch on this value, not on the `error` text.\n\n**Contract codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_parameter` | 400 | A parameter failed to parse or validate. `param` names it and `valid_values` lists accepted values where the set is fixed. |\n| `invalid_symbol` | 400 | The symbol is not listed on this venue. |\n| `invalid_interval` | 400 | The `interval` (bucket width) is not one this route accepts. |\n| `invalid_cursor` | 400 | The `cursor` is malformed, stale, or was issued for other filters. Restart pagination without a cursor. Trades, liquidations, L2 and L4 diffs, order history and TP/SL routes currently return the first page for a malformed cursor instead. |\n| `invalid_time_range` | 400 | `start` is after `end`, or a time value could not be parsed. |\n| `range_before_coverage` | 400 | The whole requested range ends before the first instant this dataset is served from. |\n| `historical_range_exceeded` | 403 | The requested span is longer than the plan allows in one request or replay. |\n| `historical_depth_exceeded` | 403 | The request reaches further back than the plan's history window. |\n| `unsupported_for_venue` | 404 | The venue does not offer this datatype. The message, `datatype` and `available_on` name where it is served. |\n| `route_not_found` | 404 | No route matches the path or method. `GET /v1/capabilities` lists the routes each venue serves. |\n| `not_found` | 404 | The route exists but the requested resource (for example an incident, endpoint or outcome id) does not. |\n| `unauthorized` | 401 | The API key is missing or invalid. |\n| `forbidden` | 403 | The key is valid but not allowed to make this request. |\n| `insufficient_credits` | 429 | The monthly credit allowance is spent (402 on pay-per-request routes). |\n| `rate_limited` | 429 | Too many requests or concurrent queries. Retry after the interval in the rate-limit headers. |\n| `conflict` | 409 | The request conflicts with the current state of the resource. |\n| `upstream_unavailable` | 503 | A dependency is unavailable or saturated. Retry shortly; the response carries `Retry-After`. |\n| `internal_error` | 500 | An unexpected server error. Quote `request_id` when contacting support. |\n\n**WebSocket only** (sent in `{\"type\":\"error\"}` messages, never by REST)\n\n| Code | Where | Meaning |\n|---|---|---|\n| `endpoint_unsupported` | WebSocket | This WebSocket endpoint does not serve the channel or operation. The message names the endpoint that does. |\n| `slow_consumer` | WebSocket | The connection fell behind a stream and messages were dropped. Re-subscribe, or restart the replay, to resynchronise. |\n\n**Route-specific codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `positions_unavailable` | 503 | Account positions are temporarily unavailable for this venue. |\n| `reconstruction_unavailable` | 503 | The as-of positions state for this instant cannot be reconstructed right now. |\n| `snapshot_advanced` | 409 | A positions market cursor pinned a snapshot that has since been replaced or expired. Restart pagination. |\n| `pagination_unavailable` | 503 | The next positions page cannot be served right now. Retry the same cursor shortly. |\n| `api_key_limit_reached` | 403 | The account already holds the maximum number of API keys for its plan. |\n| `wallet_requires_plan` | 402 | A wallet-authenticated key needs an active plan for this request. |\n| `wallet_account_required` | 403 | Wallet sign-in needs an existing account linked to the wallet. |\n| `wallet_free_signup_retired` | 410 | Free wallet sign-up is no longer offered. |\n| `account_disabled` | 403 | The account is disabled. |\n| `oauth_not_permitted` | 403 | This route is not available to OAuth access tokens. |\n| `insufficient_scope` | 403 | The OAuth access token lacks the scope this route requires. |\n\n**Legacy names.** Requests without `0xArchive-Version: 2026-10-01` keep the four names that predate the contract; with the header they receive the contract names instead.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_query_params` | 400 | Legacy name of `invalid_parameter` (query parameter), or of `invalid_cursor` when the parameter is `cursor`, sent without the version header. |\n| `invalid_path_params` | 400 | Legacy name of `invalid_parameter` (path parameter), sent without the version header. |\n| `history_window_exceeded` | 403 | Legacy name of `historical_depth_exceeded`, sent without the version header. |\n| `request_range_exceeded` | 403 | Legacy name of `historical_range_exceeded`, sent without the version header. |\n\nTreat any value not listed here as a generic error of the HTTP status.","enum":["invalid_parameter","invalid_symbol","invalid_interval","invalid_cursor","invalid_time_range","range_before_coverage","historical_range_exceeded","historical_depth_exceeded","unsupported_for_venue","route_not_found","not_found","unauthorized","forbidden","insufficient_credits","rate_limited","conflict","upstream_unavailable","internal_error","endpoint_unsupported","slow_consumer","positions_unavailable","reconstruction_unavailable","snapshot_advanced","pagination_unavailable","api_key_limit_reached","wallet_requires_plan","wallet_account_required","wallet_free_signup_retired","account_disabled","oauth_not_permitted","insufficient_scope","invalid_query_params","invalid_path_params","history_window_exceeded","request_range_exceeded"],"example":"invalid_parameter","isRequired":true,"uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"error":{"type":"string","description":"Human-readable message. Wording can change; do not parse it.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"request_id":{"type":"string","format":"uuid","description":"Unique request ID for support.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string\u003cuuid>"},"param":{"type":"string","description":"The parameter that failed validation, when one did.","example":"side","uniqueKey":"param","typeLabel":"string"},"valid_values":{"type":"array","items":{"type":"string","uniqueKey":"valid_values.items.[INDEX]","typeLabel":"string"},"description":"Accepted values of `param`, when the set is fixed.","example":["buy","sell"],"uniqueKey":"valid_values","typeLabel":"string[]"},"venue":{"type":"string","description":"`unsupported_for_venue` only: the venue the request asked.","example":"spot","uniqueKey":"venue","typeLabel":"string"},"datatype":{"type":"string","description":"`unsupported_for_venue` only: the datatype the request asked for, as `GET /v1/capabilities` names it.","example":"order_flow","uniqueKey":"datatype","typeLabel":"string"},"available_on":{"type":"array","description":"`unsupported_for_venue` only: the venues and routes that serve the datatype.","items":{"type":"object","required":["venue","route"],"properties":{"venue":{"type":"string","example":"hyperliquid","isRequired":true,"uniqueKey":"available_on.items.[INDEX].venue","typeLabel":"string"},"route":{"type":"string","example":"/v1/hyperliquid/orders/{symbol}/flow","isRequired":true,"uniqueKey":"available_on.items.[INDEX].route","typeLabel":"string"}},"uniqueKey":"available_on.items.[INDEX]","typeLabel":"object"},"uniqueKey":"available_on","typeLabel":"object[]"},"credits_used":{"type":"integer","format":"int64","description":"`insufficient_credits` only: credits used this period.","uniqueKey":"credits_used","typeLabel":"integer\u003cint64>"},"credits_limit":{"type":"integer","format":"int64","description":"`insufficient_credits` only: the period's credit allowance.","uniqueKey":"credits_limit","typeLabel":"integer\u003cint64>"},"max_concurrent":{"type":"integer","description":"`rate_limited` concurrency refusals only: simultaneous queries the plan allows.","uniqueKey":"max_concurrent","typeLabel":"integer"},"suggestion":{"type":"object","description":"Present when the symbol exists on another venue: where to request it instead.","properties":{"venue":{"type":"string","example":"hip3","uniqueKey":"suggestion.venue","typeLabel":"string"},"symbol":{"type":"string","example":"xyz:TSLA","uniqueKey":"suggestion.symbol","typeLabel":"string"},"endpoint":{"type":"string","example":"/v1/hyperliquid/hip3/trades/xyz:TSLA","uniqueKey":"suggestion.endpoint","typeLabel":"string"}},"uniqueKey":"suggestion","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"invalid_parameter":{"title":"invalid_parameter","value":{"success":false,"code":400,"error_code":"invalid_parameter","error":"Invalid side 'up'. Use buy or sell.","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05","param":"side","valid_values":["buy","sell"]}},"invalid_symbol":{"title":"invalid_symbol","value":{"success":false,"code":400,"error_code":"invalid_symbol","error":"The symbol 'ZZZ' does not exist. Please see /v1/hyperliquid/instruments for available symbols.","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05","param":"symbol"}},"invalid_time_range":{"title":"invalid_time_range","value":{"success":false,"code":400,"error_code":"invalid_time_range","error":"start must be \u003c= end","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"}},"legacy_invalid_query_params":{"title":"legacy_invalid_query_params","value":{"success":false,"code":400,"error_code":"invalid_query_params","error":"Failed to deserialize query string: limit: invalid digit found in string","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"}},"current_main":{"title":"current_main","value":{"code":400,"error":"Failed to deserialize query string: limit: invalid digit found in string","error_code":"invalid_query_params","param":"limit","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05","success":false}}},"exampleType":"examples"}},"headers":{"0xArchive-Version":{"description":"The contract version the response was shaped with. Present only when the request sent `0xArchive-Version`.","schema":{"type":"string","enum":["2026-10-01"],"example":"2026-10-01"}}},"exampleType":"examples"},"bcabd76a-9230-40eb-898e-55cb12125dcc":{"description":"Authentication required: the API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","description":"Body of every non-2xx JSON response. `code` repeats the HTTP status, `error_code` is the stable machine-readable code (see `ErrorCode`), `error` is a human-readable message, and `request_id` identifies the request for support. Validation failures add `param` and, where the accepted set is fixed, `valid_values`. A 404 for a datatype the venue does not offer (`unsupported_for_venue`) adds `venue`, `datatype` and `available_on`; any other unknown path answers 404 `route_not_found`.","required":["success","code","error_code","error","request_id"],"properties":{"success":{"type":"boolean","enum":[false],"description":"Always `false` on an error.","isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"code":{"type":"integer","description":"HTTP status code.","example":400,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"error_code":{"type":"string","description":"Stable, machine-readable error code. Branch on this value, not on the `error` text.\n\n**Contract codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_parameter` | 400 | A parameter failed to parse or validate. `param` names it and `valid_values` lists accepted values where the set is fixed. |\n| `invalid_symbol` | 400 | The symbol is not listed on this venue. |\n| `invalid_interval` | 400 | The `interval` (bucket width) is not one this route accepts. |\n| `invalid_cursor` | 400 | The `cursor` is malformed, stale, or was issued for other filters. Restart pagination without a cursor. Trades, liquidations, L2 and L4 diffs, order history and TP/SL routes currently return the first page for a malformed cursor instead. |\n| `invalid_time_range` | 400 | `start` is after `end`, or a time value could not be parsed. |\n| `range_before_coverage` | 400 | The whole requested range ends before the first instant this dataset is served from. |\n| `historical_range_exceeded` | 403 | The requested span is longer than the plan allows in one request or replay. |\n| `historical_depth_exceeded` | 403 | The request reaches further back than the plan's history window. |\n| `unsupported_for_venue` | 404 | The venue does not offer this datatype. The message, `datatype` and `available_on` name where it is served. |\n| `route_not_found` | 404 | No route matches the path or method. `GET /v1/capabilities` lists the routes each venue serves. |\n| `not_found` | 404 | The route exists but the requested resource (for example an incident, endpoint or outcome id) does not. |\n| `unauthorized` | 401 | The API key is missing or invalid. |\n| `forbidden` | 403 | The key is valid but not allowed to make this request. |\n| `insufficient_credits` | 429 | The monthly credit allowance is spent (402 on pay-per-request routes). |\n| `rate_limited` | 429 | Too many requests or concurrent queries. Retry after the interval in the rate-limit headers. |\n| `conflict` | 409 | The request conflicts with the current state of the resource. |\n| `upstream_unavailable` | 503 | A dependency is unavailable or saturated. Retry shortly; the response carries `Retry-After`. |\n| `internal_error` | 500 | An unexpected server error. Quote `request_id` when contacting support. |\n\n**WebSocket only** (sent in `{\"type\":\"error\"}` messages, never by REST)\n\n| Code | Where | Meaning |\n|---|---|---|\n| `endpoint_unsupported` | WebSocket | This WebSocket endpoint does not serve the channel or operation. The message names the endpoint that does. |\n| `slow_consumer` | WebSocket | The connection fell behind a stream and messages were dropped. Re-subscribe, or restart the replay, to resynchronise. |\n\n**Route-specific codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `positions_unavailable` | 503 | Account positions are temporarily unavailable for this venue. |\n| `reconstruction_unavailable` | 503 | The as-of positions state for this instant cannot be reconstructed right now. |\n| `snapshot_advanced` | 409 | A positions market cursor pinned a snapshot that has since been replaced or expired. Restart pagination. |\n| `pagination_unavailable` | 503 | The next positions page cannot be served right now. Retry the same cursor shortly. |\n| `api_key_limit_reached` | 403 | The account already holds the maximum number of API keys for its plan. |\n| `wallet_requires_plan` | 402 | A wallet-authenticated key needs an active plan for this request. |\n| `wallet_account_required` | 403 | Wallet sign-in needs an existing account linked to the wallet. |\n| `wallet_free_signup_retired` | 410 | Free wallet sign-up is no longer offered. |\n| `account_disabled` | 403 | The account is disabled. |\n| `oauth_not_permitted` | 403 | This route is not available to OAuth access tokens. |\n| `insufficient_scope` | 403 | The OAuth access token lacks the scope this route requires. |\n\n**Legacy names.** Requests without `0xArchive-Version: 2026-10-01` keep the four names that predate the contract; with the header they receive the contract names instead.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_query_params` | 400 | Legacy name of `invalid_parameter` (query parameter), or of `invalid_cursor` when the parameter is `cursor`, sent without the version header. |\n| `invalid_path_params` | 400 | Legacy name of `invalid_parameter` (path parameter), sent without the version header. |\n| `history_window_exceeded` | 403 | Legacy name of `historical_depth_exceeded`, sent without the version header. |\n| `request_range_exceeded` | 403 | Legacy name of `historical_range_exceeded`, sent without the version header. |\n\nTreat any value not listed here as a generic error of the HTTP status.","enum":["invalid_parameter","invalid_symbol","invalid_interval","invalid_cursor","invalid_time_range","range_before_coverage","historical_range_exceeded","historical_depth_exceeded","unsupported_for_venue","route_not_found","not_found","unauthorized","forbidden","insufficient_credits","rate_limited","conflict","upstream_unavailable","internal_error","endpoint_unsupported","slow_consumer","positions_unavailable","reconstruction_unavailable","snapshot_advanced","pagination_unavailable","api_key_limit_reached","wallet_requires_plan","wallet_account_required","wallet_free_signup_retired","account_disabled","oauth_not_permitted","insufficient_scope","invalid_query_params","invalid_path_params","history_window_exceeded","request_range_exceeded"],"example":"invalid_parameter","isRequired":true,"uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"error":{"type":"string","description":"Human-readable message. Wording can change; do not parse it.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"request_id":{"type":"string","format":"uuid","description":"Unique request ID for support.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string\u003cuuid>"},"param":{"type":"string","description":"The parameter that failed validation, when one did.","example":"side","uniqueKey":"param","typeLabel":"string"},"valid_values":{"type":"array","items":{"type":"string","uniqueKey":"valid_values.items.[INDEX]","typeLabel":"string"},"description":"Accepted values of `param`, when the set is fixed.","example":["buy","sell"],"uniqueKey":"valid_values","typeLabel":"string[]"},"venue":{"type":"string","description":"`unsupported_for_venue` only: the venue the request asked.","example":"spot","uniqueKey":"venue","typeLabel":"string"},"datatype":{"type":"string","description":"`unsupported_for_venue` only: the datatype the request asked for, as `GET /v1/capabilities` names it.","example":"order_flow","uniqueKey":"datatype","typeLabel":"string"},"available_on":{"type":"array","description":"`unsupported_for_venue` only: the venues and routes that serve the datatype.","items":{"type":"object","required":["venue","route"],"properties":{"venue":{"type":"string","example":"hyperliquid","isRequired":true,"uniqueKey":"available_on.items.[INDEX].venue","typeLabel":"string"},"route":{"type":"string","example":"/v1/hyperliquid/orders/{symbol}/flow","isRequired":true,"uniqueKey":"available_on.items.[INDEX].route","typeLabel":"string"}},"uniqueKey":"available_on.items.[INDEX]","typeLabel":"object"},"uniqueKey":"available_on","typeLabel":"object[]"},"credits_used":{"type":"integer","format":"int64","description":"`insufficient_credits` only: credits used this period.","uniqueKey":"credits_used","typeLabel":"integer\u003cint64>"},"credits_limit":{"type":"integer","format":"int64","description":"`insufficient_credits` only: the period's credit allowance.","uniqueKey":"credits_limit","typeLabel":"integer\u003cint64>"},"max_concurrent":{"type":"integer","description":"`rate_limited` concurrency refusals only: simultaneous queries the plan allows.","uniqueKey":"max_concurrent","typeLabel":"integer"},"suggestion":{"type":"object","description":"Present when the symbol exists on another venue: where to request it instead.","properties":{"venue":{"type":"string","example":"hip3","uniqueKey":"suggestion.venue","typeLabel":"string"},"symbol":{"type":"string","example":"xyz:TSLA","uniqueKey":"suggestion.symbol","typeLabel":"string"},"endpoint":{"type":"string","example":"/v1/hyperliquid/hip3/trades/xyz:TSLA","uniqueKey":"suggestion.endpoint","typeLabel":"string"}},"uniqueKey":"suggestion","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"success":false,"code":401,"error_code":"unauthorized","error":"Missing authentication credentials. Provide X-API-Key header or Bearer token.","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"},"examples":{"Example":{"title":"Example","value":{"success":false,"code":401,"error_code":"unauthorized","error":"Missing authentication credentials. Provide X-API-Key header or Bearer token.","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"}}},"exampleType":"examples"}},"headers":{"0xArchive-Version":{"description":"The contract version the response was shaped with. Present only when the request sent `0xArchive-Version`.","schema":{"type":"string","enum":["2026-10-01"],"example":"2026-10-01"}}},"exampleType":"examples"},"93fd491e-0a47-4c8a-8d6b-189b62f0b118":{"description":"Rate limit, concurrency limit or monthly credits exceeded. See `error_code`.","content":{"application/json":{"schema":{"type":"object","description":"Body of every non-2xx JSON response. `code` repeats the HTTP status, `error_code` is the stable machine-readable code (see `ErrorCode`), `error` is a human-readable message, and `request_id` identifies the request for support. Validation failures add `param` and, where the accepted set is fixed, `valid_values`. A 404 for a datatype the venue does not offer (`unsupported_for_venue`) adds `venue`, `datatype` and `available_on`; any other unknown path answers 404 `route_not_found`.","required":["success","code","error_code","error","request_id"],"properties":{"success":{"type":"boolean","enum":[false],"description":"Always `false` on an error.","isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"code":{"type":"integer","description":"HTTP status code.","example":400,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"error_code":{"type":"string","description":"Stable, machine-readable error code. Branch on this value, not on the `error` text.\n\n**Contract codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_parameter` | 400 | A parameter failed to parse or validate. `param` names it and `valid_values` lists accepted values where the set is fixed. |\n| `invalid_symbol` | 400 | The symbol is not listed on this venue. |\n| `invalid_interval` | 400 | The `interval` (bucket width) is not one this route accepts. |\n| `invalid_cursor` | 400 | The `cursor` is malformed, stale, or was issued for other filters. Restart pagination without a cursor. Trades, liquidations, L2 and L4 diffs, order history and TP/SL routes currently return the first page for a malformed cursor instead. |\n| `invalid_time_range` | 400 | `start` is after `end`, or a time value could not be parsed. |\n| `range_before_coverage` | 400 | The whole requested range ends before the first instant this dataset is served from. |\n| `historical_range_exceeded` | 403 | The requested span is longer than the plan allows in one request or replay. |\n| `historical_depth_exceeded` | 403 | The request reaches further back than the plan's history window. |\n| `unsupported_for_venue` | 404 | The venue does not offer this datatype. The message, `datatype` and `available_on` name where it is served. |\n| `route_not_found` | 404 | No route matches the path or method. `GET /v1/capabilities` lists the routes each venue serves. |\n| `not_found` | 404 | The route exists but the requested resource (for example an incident, endpoint or outcome id) does not. |\n| `unauthorized` | 401 | The API key is missing or invalid. |\n| `forbidden` | 403 | The key is valid but not allowed to make this request. |\n| `insufficient_credits` | 429 | The monthly credit allowance is spent (402 on pay-per-request routes). |\n| `rate_limited` | 429 | Too many requests or concurrent queries. Retry after the interval in the rate-limit headers. |\n| `conflict` | 409 | The request conflicts with the current state of the resource. |\n| `upstream_unavailable` | 503 | A dependency is unavailable or saturated. Retry shortly; the response carries `Retry-After`. |\n| `internal_error` | 500 | An unexpected server error. Quote `request_id` when contacting support. |\n\n**WebSocket only** (sent in `{\"type\":\"error\"}` messages, never by REST)\n\n| Code | Where | Meaning |\n|---|---|---|\n| `endpoint_unsupported` | WebSocket | This WebSocket endpoint does not serve the channel or operation. The message names the endpoint that does. |\n| `slow_consumer` | WebSocket | The connection fell behind a stream and messages were dropped. Re-subscribe, or restart the replay, to resynchronise. |\n\n**Route-specific codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `positions_unavailable` | 503 | Account positions are temporarily unavailable for this venue. |\n| `reconstruction_unavailable` | 503 | The as-of positions state for this instant cannot be reconstructed right now. |\n| `snapshot_advanced` | 409 | A positions market cursor pinned a snapshot that has since been replaced or expired. Restart pagination. |\n| `pagination_unavailable` | 503 | The next positions page cannot be served right now. Retry the same cursor shortly. |\n| `api_key_limit_reached` | 403 | The account already holds the maximum number of API keys for its plan. |\n| `wallet_requires_plan` | 402 | A wallet-authenticated key needs an active plan for this request. |\n| `wallet_account_required` | 403 | Wallet sign-in needs an existing account linked to the wallet. |\n| `wallet_free_signup_retired` | 410 | Free wallet sign-up is no longer offered. |\n| `account_disabled` | 403 | The account is disabled. |\n| `oauth_not_permitted` | 403 | This route is not available to OAuth access tokens. |\n| `insufficient_scope` | 403 | The OAuth access token lacks the scope this route requires. |\n\n**Legacy names.** Requests without `0xArchive-Version: 2026-10-01` keep the four names that predate the contract; with the header they receive the contract names instead.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_query_params` | 400 | Legacy name of `invalid_parameter` (query parameter), or of `invalid_cursor` when the parameter is `cursor`, sent without the version header. |\n| `invalid_path_params` | 400 | Legacy name of `invalid_parameter` (path parameter), sent without the version header. |\n| `history_window_exceeded` | 403 | Legacy name of `historical_depth_exceeded`, sent without the version header. |\n| `request_range_exceeded` | 403 | Legacy name of `historical_range_exceeded`, sent without the version header. |\n\nTreat any value not listed here as a generic error of the HTTP status.","enum":["invalid_parameter","invalid_symbol","invalid_interval","invalid_cursor","invalid_time_range","range_before_coverage","historical_range_exceeded","historical_depth_exceeded","unsupported_for_venue","route_not_found","not_found","unauthorized","forbidden","insufficient_credits","rate_limited","conflict","upstream_unavailable","internal_error","endpoint_unsupported","slow_consumer","positions_unavailable","reconstruction_unavailable","snapshot_advanced","pagination_unavailable","api_key_limit_reached","wallet_requires_plan","wallet_account_required","wallet_free_signup_retired","account_disabled","oauth_not_permitted","insufficient_scope","invalid_query_params","invalid_path_params","history_window_exceeded","request_range_exceeded"],"example":"invalid_parameter","isRequired":true,"uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"error":{"type":"string","description":"Human-readable message. Wording can change; do not parse it.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"request_id":{"type":"string","format":"uuid","description":"Unique request ID for support.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string\u003cuuid>"},"param":{"type":"string","description":"The parameter that failed validation, when one did.","example":"side","uniqueKey":"param","typeLabel":"string"},"valid_values":{"type":"array","items":{"type":"string","uniqueKey":"valid_values.items.[INDEX]","typeLabel":"string"},"description":"Accepted values of `param`, when the set is fixed.","example":["buy","sell"],"uniqueKey":"valid_values","typeLabel":"string[]"},"venue":{"type":"string","description":"`unsupported_for_venue` only: the venue the request asked.","example":"spot","uniqueKey":"venue","typeLabel":"string"},"datatype":{"type":"string","description":"`unsupported_for_venue` only: the datatype the request asked for, as `GET /v1/capabilities` names it.","example":"order_flow","uniqueKey":"datatype","typeLabel":"string"},"available_on":{"type":"array","description":"`unsupported_for_venue` only: the venues and routes that serve the datatype.","items":{"type":"object","required":["venue","route"],"properties":{"venue":{"type":"string","example":"hyperliquid","isRequired":true,"uniqueKey":"available_on.items.[INDEX].venue","typeLabel":"string"},"route":{"type":"string","example":"/v1/hyperliquid/orders/{symbol}/flow","isRequired":true,"uniqueKey":"available_on.items.[INDEX].route","typeLabel":"string"}},"uniqueKey":"available_on.items.[INDEX]","typeLabel":"object"},"uniqueKey":"available_on","typeLabel":"object[]"},"credits_used":{"type":"integer","format":"int64","description":"`insufficient_credits` only: credits used this period.","uniqueKey":"credits_used","typeLabel":"integer\u003cint64>"},"credits_limit":{"type":"integer","format":"int64","description":"`insufficient_credits` only: the period's credit allowance.","uniqueKey":"credits_limit","typeLabel":"integer\u003cint64>"},"max_concurrent":{"type":"integer","description":"`rate_limited` concurrency refusals only: simultaneous queries the plan allows.","uniqueKey":"max_concurrent","typeLabel":"integer"},"suggestion":{"type":"object","description":"Present when the symbol exists on another venue: where to request it instead.","properties":{"venue":{"type":"string","example":"hip3","uniqueKey":"suggestion.venue","typeLabel":"string"},"symbol":{"type":"string","example":"xyz:TSLA","uniqueKey":"suggestion.symbol","typeLabel":"string"},"endpoint":{"type":"string","example":"/v1/hyperliquid/hip3/trades/xyz:TSLA","uniqueKey":"suggestion.endpoint","typeLabel":"string"}},"uniqueKey":"suggestion","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"rate_limited":{"title":"rate_limited","value":{"success":false,"code":429,"error_code":"rate_limited","error":"Rate limit exceeded","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"}},"insufficient_credits":{"title":"insufficient_credits","value":{"success":false,"code":429,"error_code":"insufficient_credits","error":"Monthly credit limit exceeded. Please upgrade your plan.","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05","credits_used":50000,"credits_limit":50000}}},"exampleType":"examples"}},"headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"},"description":"Requests per second limit"},"X-RateLimit-Remaining":{"schema":{"type":"integer"},"description":"Remaining requests this second"},"X-RateLimit-Reset":{"schema":{"type":"integer"},"description":"Unix timestamp when limit resets"},"0xArchive-Version":{"description":"The contract version the response was shaped with. Present only when the request sent `0xArchive-Version`.","schema":{"type":"string","enum":["2026-10-01"],"example":"2026-10-01"}}},"exampleType":"examples"},"d6d379d0-5a37-4fd9-b11e-711fa2575ad6":{"description":"Any other error. The body is an `ErrorResponse`; branch on `error_code`. A 503 (`upstream_unavailable`) carries `Retry-After`.","content":{"application/json":{"schema":{"type":"object","description":"Body of every non-2xx JSON response. `code` repeats the HTTP status, `error_code` is the stable machine-readable code (see `ErrorCode`), `error` is a human-readable message, and `request_id` identifies the request for support. Validation failures add `param` and, where the accepted set is fixed, `valid_values`. A 404 for a datatype the venue does not offer (`unsupported_for_venue`) adds `venue`, `datatype` and `available_on`; any other unknown path answers 404 `route_not_found`.","required":["success","code","error_code","error","request_id"],"properties":{"success":{"type":"boolean","enum":[false],"description":"Always `false` on an error.","isRequired":true,"uniqueKey":"success","typeLabel":"enum\u003cboolean>"},"code":{"type":"integer","description":"HTTP status code.","example":400,"isRequired":true,"uniqueKey":"code","typeLabel":"integer"},"error_code":{"type":"string","description":"Stable, machine-readable error code. Branch on this value, not on the `error` text.\n\n**Contract codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_parameter` | 400 | A parameter failed to parse or validate. `param` names it and `valid_values` lists accepted values where the set is fixed. |\n| `invalid_symbol` | 400 | The symbol is not listed on this venue. |\n| `invalid_interval` | 400 | The `interval` (bucket width) is not one this route accepts. |\n| `invalid_cursor` | 400 | The `cursor` is malformed, stale, or was issued for other filters. Restart pagination without a cursor. Trades, liquidations, L2 and L4 diffs, order history and TP/SL routes currently return the first page for a malformed cursor instead. |\n| `invalid_time_range` | 400 | `start` is after `end`, or a time value could not be parsed. |\n| `range_before_coverage` | 400 | The whole requested range ends before the first instant this dataset is served from. |\n| `historical_range_exceeded` | 403 | The requested span is longer than the plan allows in one request or replay. |\n| `historical_depth_exceeded` | 403 | The request reaches further back than the plan's history window. |\n| `unsupported_for_venue` | 404 | The venue does not offer this datatype. The message, `datatype` and `available_on` name where it is served. |\n| `route_not_found` | 404 | No route matches the path or method. `GET /v1/capabilities` lists the routes each venue serves. |\n| `not_found` | 404 | The route exists but the requested resource (for example an incident, endpoint or outcome id) does not. |\n| `unauthorized` | 401 | The API key is missing or invalid. |\n| `forbidden` | 403 | The key is valid but not allowed to make this request. |\n| `insufficient_credits` | 429 | The monthly credit allowance is spent (402 on pay-per-request routes). |\n| `rate_limited` | 429 | Too many requests or concurrent queries. Retry after the interval in the rate-limit headers. |\n| `conflict` | 409 | The request conflicts with the current state of the resource. |\n| `upstream_unavailable` | 503 | A dependency is unavailable or saturated. Retry shortly; the response carries `Retry-After`. |\n| `internal_error` | 500 | An unexpected server error. Quote `request_id` when contacting support. |\n\n**WebSocket only** (sent in `{\"type\":\"error\"}` messages, never by REST)\n\n| Code | Where | Meaning |\n|---|---|---|\n| `endpoint_unsupported` | WebSocket | This WebSocket endpoint does not serve the channel or operation. The message names the endpoint that does. |\n| `slow_consumer` | WebSocket | The connection fell behind a stream and messages were dropped. Re-subscribe, or restart the replay, to resynchronise. |\n\n**Route-specific codes**\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `positions_unavailable` | 503 | Account positions are temporarily unavailable for this venue. |\n| `reconstruction_unavailable` | 503 | The as-of positions state for this instant cannot be reconstructed right now. |\n| `snapshot_advanced` | 409 | A positions market cursor pinned a snapshot that has since been replaced or expired. Restart pagination. |\n| `pagination_unavailable` | 503 | The next positions page cannot be served right now. Retry the same cursor shortly. |\n| `api_key_limit_reached` | 403 | The account already holds the maximum number of API keys for its plan. |\n| `wallet_requires_plan` | 402 | A wallet-authenticated key needs an active plan for this request. |\n| `wallet_account_required` | 403 | Wallet sign-in needs an existing account linked to the wallet. |\n| `wallet_free_signup_retired` | 410 | Free wallet sign-up is no longer offered. |\n| `account_disabled` | 403 | The account is disabled. |\n| `oauth_not_permitted` | 403 | This route is not available to OAuth access tokens. |\n| `insufficient_scope` | 403 | The OAuth access token lacks the scope this route requires. |\n\n**Legacy names.** Requests without `0xArchive-Version: 2026-10-01` keep the four names that predate the contract; with the header they receive the contract names instead.\n\n| Code | HTTP | Meaning |\n|---|---|---|\n| `invalid_query_params` | 400 | Legacy name of `invalid_parameter` (query parameter), or of `invalid_cursor` when the parameter is `cursor`, sent without the version header. |\n| `invalid_path_params` | 400 | Legacy name of `invalid_parameter` (path parameter), sent without the version header. |\n| `history_window_exceeded` | 403 | Legacy name of `historical_depth_exceeded`, sent without the version header. |\n| `request_range_exceeded` | 403 | Legacy name of `historical_range_exceeded`, sent without the version header. |\n\nTreat any value not listed here as a generic error of the HTTP status.","enum":["invalid_parameter","invalid_symbol","invalid_interval","invalid_cursor","invalid_time_range","range_before_coverage","historical_range_exceeded","historical_depth_exceeded","unsupported_for_venue","route_not_found","not_found","unauthorized","forbidden","insufficient_credits","rate_limited","conflict","upstream_unavailable","internal_error","endpoint_unsupported","slow_consumer","positions_unavailable","reconstruction_unavailable","snapshot_advanced","pagination_unavailable","api_key_limit_reached","wallet_requires_plan","wallet_account_required","wallet_free_signup_retired","account_disabled","oauth_not_permitted","insufficient_scope","invalid_query_params","invalid_path_params","history_window_exceeded","request_range_exceeded"],"example":"invalid_parameter","isRequired":true,"uniqueKey":"error_code","typeLabel":"enum\u003cstring>"},"error":{"type":"string","description":"Human-readable message. Wording can change; do not parse it.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"request_id":{"type":"string","format":"uuid","description":"Unique request ID for support.","isRequired":true,"uniqueKey":"request_id","typeLabel":"string\u003cuuid>"},"param":{"type":"string","description":"The parameter that failed validation, when one did.","example":"side","uniqueKey":"param","typeLabel":"string"},"valid_values":{"type":"array","items":{"type":"string","uniqueKey":"valid_values.items.[INDEX]","typeLabel":"string"},"description":"Accepted values of `param`, when the set is fixed.","example":["buy","sell"],"uniqueKey":"valid_values","typeLabel":"string[]"},"venue":{"type":"string","description":"`unsupported_for_venue` only: the venue the request asked.","example":"spot","uniqueKey":"venue","typeLabel":"string"},"datatype":{"type":"string","description":"`unsupported_for_venue` only: the datatype the request asked for, as `GET /v1/capabilities` names it.","example":"order_flow","uniqueKey":"datatype","typeLabel":"string"},"available_on":{"type":"array","description":"`unsupported_for_venue` only: the venues and routes that serve the datatype.","items":{"type":"object","required":["venue","route"],"properties":{"venue":{"type":"string","example":"hyperliquid","isRequired":true,"uniqueKey":"available_on.items.[INDEX].venue","typeLabel":"string"},"route":{"type":"string","example":"/v1/hyperliquid/orders/{symbol}/flow","isRequired":true,"uniqueKey":"available_on.items.[INDEX].route","typeLabel":"string"}},"uniqueKey":"available_on.items.[INDEX]","typeLabel":"object"},"uniqueKey":"available_on","typeLabel":"object[]"},"credits_used":{"type":"integer","format":"int64","description":"`insufficient_credits` only: credits used this period.","uniqueKey":"credits_used","typeLabel":"integer\u003cint64>"},"credits_limit":{"type":"integer","format":"int64","description":"`insufficient_credits` only: the period's credit allowance.","uniqueKey":"credits_limit","typeLabel":"integer\u003cint64>"},"max_concurrent":{"type":"integer","description":"`rate_limited` concurrency refusals only: simultaneous queries the plan allows.","uniqueKey":"max_concurrent","typeLabel":"integer"},"suggestion":{"type":"object","description":"Present when the symbol exists on another venue: where to request it instead.","properties":{"venue":{"type":"string","example":"hip3","uniqueKey":"suggestion.venue","typeLabel":"string"},"symbol":{"type":"string","example":"xyz:TSLA","uniqueKey":"suggestion.symbol","typeLabel":"string"},"endpoint":{"type":"string","example":"/v1/hyperliquid/hip3/trades/xyz:TSLA","uniqueKey":"suggestion.endpoint","typeLabel":"string"}},"uniqueKey":"suggestion","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"upstream_unavailable":{"title":"upstream_unavailable","value":{"success":false,"code":503,"error_code":"upstream_unavailable","error":"The service is temporarily unavailable. Retry shortly.","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"}},"internal_error":{"title":"internal_error","value":{"success":false,"code":500,"error_code":"internal_error","error":"Internal server error","request_id":"3f2a9c71-5b0e-4d68-9a4c-7e1d2b6f8a05"}}},"exampleType":"examples"}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","example":2}},"0xArchive-Version":{"description":"The contract version the response was shaped with. Present only when the request sent `0xArchive-Version`.","schema":{"type":"string","enum":["2026-10-01"],"example":"2026-10-01"}}},"exampleType":"examples"}},"callbacks":[{"callbackName":"delivery","expression":"{$request.body#/url}","method":"post","resolved":{"operation":{"summary":"Webhook delivery","description":"How 0xArchive delivers an event to a `json`, `discord` or `slack` endpoint. Any 2xx response acknowledges it. Redirects are not followed. Each attempt times out after 10 seconds. A failed delivery is retried after 5 s, 30 s, 2 min, 10 min, 1 h and then hourly, for up to 24 hours; a `Retry-After` header on a non-2xx response (1 to 300 seconds) replaces the next step. After at least 10 consecutive failures spanning six hours the endpoint is `auto_disabled`. Telegram endpoints receive a chat message instead, without these headers.","operationId":"receiveWebhookDelivery","parameters":["09b37981-5396-4317-965c-7934766a788f","d73daab3-6ba1-4f7e-a2e4-5f81470e49ed","bf4e0c3d-3b57-47c4-8443-5a4be89f0ea8","0692529e-171c-453a-8876-3027fef0e931"],"requestBody":"e9a75b39-7b14-48cf-aa79-532ef10cc683","responses":{"2XX":"30b2ee1b-e86c-4931-a439-646464dcbd72","default":"ba6a3e70-eba5-4a5b-9597-aa701fc284d0"},"method":"post","type":"path"},"dependencies":{"parameters":{"09b37981-5396-4317-965c-7934766a788f":{"name":"0xa-signature","in":"header","required":true,"description":"Signature of the delivery, in the form `t=\u003cunix seconds>,v1=\u003chex>`. `v1` is the lowercase hex HMAC-SHA256 of the string `\u003ct>.\u003craw body>`, keyed with the endpoint's signing secret (the full `whsec_...` string as UTF-8 bytes). Verify over the raw request bytes before parsing them. For 24 hours after a secret rotation the header carries two `v1` values, `t=\u003ct>,v1=\u003cnew secret>,v1=\u003cprevious secret>`; accept the delivery when either matches. `t` is set on each attempt, so compare it with your clock to reject replays.","schema":{"type":"string","example":"t=1767225600,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd","isRequired":true,"description":"Signature of the delivery, in the form `t=\u003cunix seconds>,v1=\u003chex>`. `v1` is the lowercase hex HMAC-SHA256 of the string `\u003ct>.\u003craw body>`, keyed with the endpoint's signing secret (the full `whsec_...` string as UTF-8 bytes). Verify over the raw request bytes before parsing them. For 24 hours after a secret rotation the header carries two `v1` values, `t=\u003ct>,v1=\u003cnew secret>,v1=\u003cprevious secret>`; accept the delivery when either matches. `t` is set on each attempt, so compare it with your clock to reject replays.","uniqueKey":"","typeLabel":"string"}},"d73daab3-6ba1-4f7e-a2e4-5f81470e49ed":{"name":"0xa-event-id","in":"header","required":true,"description":"Event identifier; equals the body `id` and is stable across retries.","schema":{"type":"string","format":"uuid","isRequired":true,"description":"Event identifier; equals the body `id` and is stable across retries.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"bf4e0c3d-3b57-47c4-8443-5a4be89f0ea8":{"name":"0xa-event-type","in":"header","required":true,"description":"Event type; equals the body `type`.","schema":{"type":"string","example":"market.liquidation","isRequired":true,"description":"Event type; equals the body `type`.","uniqueKey":"","typeLabel":"string"}},"0692529e-171c-453a-8876-3027fef0e931":{"name":"User-Agent","in":"header","required":false,"description":"`0xArchive-Webhooks/1.0`.","schema":{"type":"string","isRequired":false,"description":"`0xArchive-Webhooks/1.0`.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Body of a webhook delivery to a `json` endpoint. The same `id` is sent on every retry and redelivery of the event; use it (or the `0xa-event-id` header) to deduplicate. Delivery is at least once.","required":["id","type","schema_version","observed_at","data"],"properties":{"id":{"type":"string","format":"uuid","description":"Event identifier, stable across retries and redeliveries. Equals the `0xa-event-id` header.","isRequired":true,"uniqueKey":"id","typeLabel":"string\u003cuuid>"},"type":{"type":"string","description":"Event type from the catalog. Equals the `0xa-event-type` header.","example":"market.liquidation","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"schema_version":{"type":"integer","description":"Version of the `data` shape for this event type.","example":1,"isRequired":true,"uniqueKey":"schema_version","typeLabel":"integer"},"observed_at":{"type":"string","format":"date-time","description":"When the event was detected.","isRequired":true,"uniqueKey":"observed_at","typeLabel":"string\u003cdate-time>"},"data":{"type":"object","additionalProperties":true,"description":"Event payload. Its fields are the metrics the catalog declares for the event type.","isRequired":true,"uniqueKey":"data","typeLabel":"object"},"late_ms":{"oneOf":[{"type":"integer","format":"int64","description":"How long after the underlying occurrence the event was detected, in milliseconds. Null when the occurrence carries no timestamp; absent on test, export and some operational events.","uniqueKey":"late_ms.oneOf.0","typeLabel":"integer\u003cint64>"},{"type":"null","format":"int64","description":"How long after the underlying occurrence the event was detected, in milliseconds. Null when the occurrence carries no timestamp; absent on test, export and some operational events.","uniqueKey":"late_ms.oneOf.1","typeLabel":"null"}],"uniqueKey":"late_ms","typeLabel":"integer\u003cint64> | null"},"late":{"type":"boolean","description":"True when `late_ms` exceeds ten minutes. Absent where `late_ms` is absent.","uniqueKey":"late","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","type":"market.liquidation","schema_version":1,"observed_at":"2023-11-07T05:31:56Z","data":{},"late_ms":123,"late":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"30b2ee1b-e86c-4931-a439-646464dcbd72":{"description":"Delivered. The response body is ignored.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"ba6a3e70-eba5-4a5b-9597-aa701fc284d0":{"description":"Not delivered; the event is retried on the schedule above.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{}}}}],"security":{"b5f63b2d-d545-4c2d-99b7-ab24e07d269d":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication. Get yours at https://0xarchive.io/dashboard","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"afa1230c-1573-4566-9e9a-40f758adb7f2":{"url":"https://api.0xarchive.io","description":"Production API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication. Get yours at https://0xarchive.io/dashboard","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"X-API-Key","type":"string","description":"API key for authentication. Get yours at https://0xarchive.io/dashboard","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"X-API-Key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"openapi.json"},"subdomain":"0xarchive-e895b8e7","siteName":"0xArchive","title":"Create a webhook endpoint - 0xArchive","contextualStarterQuestions":[{"_id":"6ae5fb24621de21a6396a2eb","deploymentId":"69fcef8bc84766ada2de665b","questionText":"How do I authenticate webhooks?","status":"active","generatedBy":"contextual","path":"api-reference/webhooks--endpoints/create-a-webhook-endpoint","createdAt":"2026-10-31T14:28:52.270Z","updatedAt":"2026-10-31T14:28:52.270Z","__v":0},{"_id":"6ae5fb24621de21a6396a2ea","deploymentId":"69fcef8bc84766ada2de665b","questionText":"What parameters are required?","status":"active","generatedBy":"contextual","path":"api-reference/webhooks--endpoints/create-a-webhook-endpoint","createdAt":"2026-10-31T14:28:52.270Z","updatedAt":"2026-10-31T14:28:52.270Z","__v":0},{"_id":"6ae5fb24621de21a6396a2e9","deploymentId":"69fcef8bc84766ada2de665b","questionText":"How do I create a webhook?","status":"active","generatedBy":"contextual","path":"api-reference/webhooks--endpoints/create-a-webhook-endpoint","createdAt":"2026-10-31T14:28:52.270Z","updatedAt":"2026-10-31T14:28:52.270Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-31T15:52:09.000Z","gitLastModified":"2026-10-07T19:23:09.000Z","originalFileLocation":"api-reference/webhooks--endpoints/create-a-webhook-endpoint.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.\">\u003cmeta data-mint-head name=\"application-name\" content=\"0xArchive\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a webhook endpoint - 0xArchive\">\u003cmeta data-mint-head property=\"og:description\" content=\"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"0xArchive Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://0xarchive-e895b8e7.mintlify.app/_mintlify/api/og/v2?division=Receiver+endpoints\u0026amp;title=Create+a+webhook+endpoint\u0026amp;description=0xArchive+API+reference+for+Create+a+webhook+endpoint.+Includes+authentication%2C+parameters%2C+response+shape%2C+examples%2C+and+route-safe+implementation+notes.\u0026amp;theme=862485424f87dd9b21cb314f\u0026amp;signature=e7a9ab5543f6867f36ebe0c915f700d4bee169006b768bef64f9ac5f333c7bc7\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a webhook endpoint - 0xArchive\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://0xarchive-e895b8e7.mintlify.app/_mintlify/api/og/v2?division=Receiver+endpoints\u0026amp;title=Create+a+webhook+endpoint\u0026amp;description=0xArchive+API+reference+for+Create+a+webhook+endpoint.+Includes+authentication%2C+parameters%2C+response+shape%2C+examples%2C+and+route-safe+implementation+notes.\u0026amp;theme=862485424f87dd9b21cb314f\u0026amp;signature=e7a9ab5543f6867f36ebe0c915f700d4bee169006b768bef64f9ac5f333c7bc7\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/0xarchive-e895b8e7/epsl9cg6_-QmFjTh/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"0xArchive\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#15803D\">\u003cmeta data-mint-head name=\"google-site-verification\" content=\"Hpedp6bedqc3av1195euaGMwyFEVHcJhcyUY9YiMvTY\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/webhooks--endpoints/create-a-webhook-endpoint.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://0xarchive.io/#organization\",\"name\":\"0xArchive\",\"legalName\":\"Archive Labs Inc.\",\"url\":\"https://0xarchive.io/\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://0xarchive.io/logo-square-1024.png\"},\"sameAs\":[\"https://x.com/0xarchiveIo\",\"https://github.com/0xArchiveIO\",\"https://t.me/archivedotio\",\"https://www.linkedin.com/company/0xarchive/\"]},{\"@type\":\"WebSite\",\"@id\":\"https://docs.0xarchive.io#website\",\"name\":\"0xArchive\",\"url\":\"https://docs.0xarchive.io\",\"publisher\":{\"@id\":\"https://0xarchive.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint#webpage\",\"url\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint\",\"name\":\"Create a webhook endpoint\",\"description\":\"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.\",\"dateModified\":\"2026-10-07T19:23:09.000Z\",\"isPartOf\":{\"@id\":\"https://docs.0xarchive.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API reference\",\"item\":\"https://docs.0xarchive.io/api-reference/webhooks\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Receiver endpoints\",\"item\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/list-webhook-endpoints\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a webhook endpoint\",\"item\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint#apireference\",\"headline\":\"Create a webhook endpoint\",\"name\":\"Create a webhook endpoint\",\"description\":\"0xArchive API reference for Create a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.\",\"url\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint\",\"mainEntityOfPage\":{\"@id\":\"https://docs.0xarchive.io/api-reference/webhooks--endpoints/create-a-webhook-endpoint#webpage\"},\"dateModified\":\"2026-10-07T19:23:09.000Z\",\"publisher\":{\"@id\":\"https://0xarchive.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.0xarchive.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"0xArchive\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"0xArchive","nav":{"global":null,"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":""}]},{"tab":"REST API","pages":[{"title":"REST API","href":"/rest-api"}]},{"tab":"WebSocket","pages":[{"title":"WebSocket","href":"/websocket"}]},{"tab":"Webhook Alerts","pages":[{"title":"Webhook Alerts","sidebarTitle":"Overview","href":"/webhooks"},{"title":"Webhook Alerts quickstart","sidebarTitle":"Quickstart","href":"/webhooks/quickstart"},{"group":"Guides","icon":"route","pages":[{"title":"Alert events","sidebarTitle":"Events","href":"/webhooks/events"},{"title":"Alert rules","sidebarTitle":"Rules","href":"/webhooks/rules"},{"title":"Estimate and dry-run","sidebarTitle":"Estimate and dry-run","href":"/webhooks/estimate-and-dry-run"},{"title":"Watched addresses","sidebarTitle":"Watched addresses","href":"/webhooks/watched-addresses"},{"title":"Signatures and payloads","sidebarTitle":"Signatures and payloads","href":"/webhooks/signatures-and-payloads"},{"title":"Delivery and retries","sidebarTitle":"Delivery and retries","href":"/webhooks/delivery-and-retries"},{"title":"Limits and plans","sidebarTitle":"Limits and plans","href":"/webhooks/limits-and-plans"}]},{"group":"API reference","icon":"book-open-check","pages":[{"title":"API overview","icon":"webhook","href":"/api-reference/webhooks"},{"group":"Event types and limits","expanded":false,"pages":[{"title":"List webhook event types","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/event-types","href":"/api-reference/webhooks--catalog-and-limits/list-webhook-event-types"},{"title":"Get webhook plan limits and usage","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/limits","href":"/api-reference/webhooks--catalog-and-limits/get-webhook-plan-limits-and-usage"}]},{"group":"Receiver endpoints","expanded":false,"pages":[{"title":"List webhook endpoints","description":"0xArchive API reference for List webhook endpoints. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/endpoints","href":"/api-reference/webhooks--endpoints/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/endpoints","href":"/api-reference/webhooks--endpoints/create-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","description":"0xArchive API reference for Delete a webhook endpoint. Includes authentication, parameters, response shape, examples, and route-safe implementation notes.","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/webhooks/endpoints/{id}","href":"/api-reference/webhooks--endpoints/delete-a-webhook-endpoint"},{"title":"Enable a webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/endpoints/{id}/enable","href":"/api-reference/webhooks--endpoints/enable-a-webhook-endpoint"},{"title":"Rotate a webhook endpoint secret","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/endpoints/{id}/rotate","href":"/api-reference/webhooks--endpoints/rotate-a-webhook-endpoint-secret"},{"title":"Send a test delivery","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/endpoints/{id}/test","href":"/api-reference/webhooks--endpoints/send-a-test-delivery"}]},{"group":"Subscriptions","expanded":false,"pages":[{"title":"List webhook subscriptions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/subscriptions","href":"/api-reference/webhooks--subscriptions/list-webhook-subscriptions"},{"title":"Create a webhook subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/subscriptions","href":"/api-reference/webhooks--subscriptions/create-a-webhook-subscription"},{"title":"Resume every paused subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/subscriptions/resume","href":"/api-reference/webhooks--subscriptions/resume-every-paused-subscription"},{"title":"Delete a webhook subscription","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/webhooks/subscriptions/{id}","href":"/api-reference/webhooks--subscriptions/delete-a-webhook-subscription"},{"title":"Update a webhook subscription","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/webhooks/subscriptions/{id}","href":"/api-reference/webhooks--subscriptions/update-a-webhook-subscription"},{"title":"Resume a paused subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/subscriptions/{id}/resume","href":"/api-reference/webhooks--subscriptions/resume-a-paused-subscription"}]},{"group":"Previews","expanded":false,"pages":[{"title":"Dry-run a webhook subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/subscriptions/dry-run","href":"/api-reference/webhooks--previews/dry-run-a-webhook-subscription"},{"title":"Estimate a webhook subscription","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/subscriptions/estimate","href":"/api-reference/webhooks--previews/estimate-a-webhook-subscription"}]},{"group":"Deliveries","expanded":false,"pages":[{"title":"Send a past delivery again","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/deliveries/{id}/redeliver","href":"/api-reference/webhooks--deliveries/send-a-past-delivery-again"},{"title":"List deliveries for an endpoint","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/endpoints/{id}/deliveries","href":"/api-reference/webhooks--deliveries/list-deliveries-for-an-endpoint"}]},{"group":"Watched addresses","expanded":false,"pages":[{"title":"List watched wallet addresses","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/webhooks/addresses","href":"/api-reference/webhooks--watched-addresses/list-watched-wallet-addresses"},{"title":"Add a watched wallet address","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/webhooks/addresses","href":"/api-reference/webhooks--watched-addresses/add-a-watched-wallet-address"},{"title":"Delete a watched wallet address","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/webhooks/addresses/{id}","href":"/api-reference/webhooks--watched-addresses/delete-a-watched-wallet-address"}]},{"group":"JSON schemas","expanded":false,"pages":[{"title":"Webhooks Schemas","href":"/schemas/families/webhooks"},{"title":"List watched wallet addresses JSON Schema","href":"/schemas/operations/list-webhook-watched-addresses"},{"title":"Add a watched wallet address JSON Schema","href":"/schemas/operations/add-webhook-watched-address"},{"title":"Delete a watched wallet address JSON Schema","href":"/schemas/operations/delete-webhook-watched-address"},{"title":"Send a past delivery again JSON Schema","href":"/schemas/operations/redeliver-webhook-delivery"},{"title":"List webhook endpoints JSON Schema","href":"/schemas/operations/list-webhook-endpoints"},{"title":"Create a webhook endpoint JSON Schema","href":"/schemas/operations/create-webhook-endpoint"},{"title":"Delete a webhook endpoint JSON Schema","href":"/schemas/operations/delete-webhook-endpoint"},{"title":"List deliveries for an endpoint JSON Schema","href":"/schemas/operations/list-webhook-deliveries"},{"title":"Enable a webhook endpoint JSON Schema","href":"/schemas/operations/enable-webhook-endpoint"},{"title":"Rotate a webhook endpoint secret JSON Schema","href":"/schemas/operations/rotate-webhook-endpoint-secret"},{"title":"Send a test delivery JSON Schema","href":"/schemas/operations/test-webhook-endpoint"},{"title":"List webhook event types JSON Schema","href":"/schemas/operations/list-webhook-event-types"},{"title":"Get webhook plan limits and usage JSON Schema","href":"/schemas/operations/get-webhook-limits"},{"title":"List webhook subscriptions JSON Schema","href":"/schemas/operations/list-webhook-subscriptions"},{"title":"Create a webhook subscription JSON Schema","href":"/schemas/operations/create-webhook-subscription"},{"title":"Dry-run a webhook subscription JSON Schema","href":"/schemas/operations/dry-run-webhook-subscription"},{"title":"Estimate a webhook subscription JSON Schema","href":"/schemas/operations/estimate-webhook-subscription"},{"title":"Resume every paused subscription JSON Schema","href":"/schemas/operations/resume-all-webhook-subscriptions"},{"title":"Delete a webhook subscription JSON Schema","href":"/schemas/operations/delete-webhook-subscription"},{"title":"Update a webhook subscription JSON Schema","href":"/schemas/operations/update-webhook-subscription"},{"title":"Resume a paused subscription JSON Schema","href":"/schemas/operations/resume-webhook-subscription"}]}]}]},{"tab":"Bulk Exports","pages":[{"title":"Bulk Exports","href":"/exports"}]},{"tab":"SDKs \u0026 Tools","pages":[{"title":"SDKs \u0026 Tools","href":"/tooling"}]},{"tab":"Terminal","pages":[{"title":"Terminal","href":"/terminal"}]}]},"basePath":"","title":"Create a webhook endpoint - 0xArchive","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}