Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (invalid_data), and the message says which webhook and why, for example “webhook job_created: not a public host”. Admins and company keys only, because webhooks carry the company’s secrets in their headers; operators and workers get 403.
{"docsConfig":{"$schema":"https://mintlify.com/docs.json","theme":"mint","name":"Hellotracks developer docs","colors":{"primary":"#22C328","light":"#FFFFFF","dark":"#333333"},"favicon":"https://mintcdn.com/hellotracks/Ef0Eqx61i3dR12gk/favicon.svg?fit=max\u0026auto=format\u0026n=Ef0Eqx61i3dR12gk\u0026q=85\u0026s=4e8e85079ee3de8a26be874f20121f8a","logo":{"light":"https://mintcdn.com/hellotracks/Ef0Eqx61i3dR12gk/logo/light.svg?fit=max\u0026auto=format\u0026n=Ef0Eqx61i3dR12gk\u0026q=85\u0026s=3402609a99cee9b7f7698ffe4729c386","dark":"https://mintcdn.com/hellotracks/Ef0Eqx61i3dR12gk/logo/dark.svg?fit=max\u0026auto=format\u0026n=Ef0Eqx61i3dR12gk\u0026q=85\u0026s=cdd51138facbdd7cf7c929d073805a3a"},"api":{"mdx":{"server":"https://api.hellotracks.com/api","auth":{"method":"key","name":"API-Key"}}},"background":{"decoration":null,"color":{"light":null,"dark":"#090014"}},"navbar":{"links":[],"primary":{"type":"button","label":"Back to Website","href":"https://hellotracks.com"}},"footer":{"socials":{}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"hellotracks","hasAudioNarration":false,"actualSubdomain":"hellotracks","customDomains":["api-docs.hellotracks.com"],"gitSource":{"type":"github","owner":"hellotracks","repo":"api-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae89276883d97e41aaefb51","collectionId":"a125913e-8abd-4296-9de2-499e8390fa79","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae89276883d97e41aaefb51"},"entitlements":{},"buildId":"6ae89a94eb73d12669c29c07","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"REST API","count":92},{"language":"default","tag":"JSON API","count":26},{"language":"default","tag":"Reports","count":19},{"language":"default","tag":"Forms","count":12},{"language":"default","tag":"Get Started","count":11},{"language":"default","tag":"Alerts","count":10},{"language":"default","tag":"Jobs","count":8},{"language":"default","tag":"ETA pages","count":7},{"language":"default","tag":"Job Management","count":6},{"language":"default","tag":"Maps","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"v1/reference/webhooks/set-webhooks","slug":"/v1/reference/webhooks/set-webhooks","pageMetadata":{"title":"Set webhooks","openapi":"v1/openapi.json PUT /webhooks","description":"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (`invalid_data`), and the message says which webhook and why, for example \"webhook job_created: not a public host\". Admins and company keys only, because webhooks carry the company's secrets in their headers; operators and workers get 403.","href":"/v1/reference/webhooks/set-webhooks"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (\", _jsx(_components.code, {\n children: \"invalid_data\"\n }), \"), and the message says which webhook and why, for example “webhook job_created: not a public host”. Admins and company keys only, because webhooks carry the company’s secrets in their headers; operators and workers get 403.\"]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Set webhooks","openapi":"v1/openapi.json PUT /webhooks","description":"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (`invalid_data`), and the message says which webhook and why, for example \"webhook job_created: not a public host\". Admins and company keys only, because webhooks carry the company's secrets in their headers; operators and workers get 403.","href":"/v1/reference/webhooks/set-webhooks"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Webhooks"],"operationId":"setWebhooks","summary":"Set webhooks","description":"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (`invalid_data`), and the message says which webhook and why, for example \"webhook job_created: not a public host\". Admins and company keys only, because webhooks carry the company's secrets in their headers; operators and workers get 403.","requestBody":"63035989-ad34-416c-944e-b7a52b770f40","responses":{"200":"5b649d0a-0731-4639-bda3-84685dd3ed96","400":"374e73d5-4267-4051-8f0c-92ee0b6619c4","401":"be1f01ba-4b53-4723-8d03-163fe0687b0c","403":"35d3c40d-31ba-46d8-b1f7-f24fab170062","429":"940869a2-c08b-4b0d-8744-cb5f2348fa7f"},"method":"put","type":"path","servers":["58bcea14-c37e-4bbc-bd59-e61bb9978210"],"security":["82c7e45e-4c5c-4eb3-8d32-71a74101e06c"],"path":"/webhooks","baseUrlOptions":["https://api.hellotracks.com/v1"],"title":"Set webhooks","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["webhooks"],"properties":{"webhooks":{"type":"object","description":"Webhooks to change, keyed by event. Webhooks left out stay as they are. Unknown event keys are accepted but ignored.","properties":{"job_created":{"type":"object","description":"A job was created.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.job_created.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.job_created.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.job_created.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.job_created","typeLabel":"object"},"job_updated":{"type":"object","description":"A job was changed.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.job_updated.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.job_updated.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.job_updated.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.job_updated","typeLabel":"object"},"job_completed":{"type":"object","description":"A job was completed (done or failed).","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.job_completed.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.job_completed.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.job_completed.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.job_completed","typeLabel":"object"},"job_archived":{"type":"object","description":"A job was archived.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.job_archived.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.job_archived.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.job_archived.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.job_archived","typeLabel":"object"},"job_deleted":{"type":"object","description":"A job was deleted.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.job_deleted.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.job_deleted.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.job_deleted.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.job_deleted","typeLabel":"object"},"job_checked":{"type":"object","description":"A worker checked in or out at a job.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.job_checked.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.job_checked.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.job_checked.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.job_checked","typeLabel":"object"},"place_checked":{"type":"object","description":"A worker checked in or out at a place.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.place_checked.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.place_checked.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.place_checked.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.place_checked","typeLabel":"object"},"clock_in_out":{"type":"object","description":"A worker clocked in or out.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.clock_in_out.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.clock_in_out.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.clock_in_out.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.clock_in_out","typeLabel":"object"},"alert_triggered":{"type":"object","description":"An alert fired.","properties":{"url":{"type":"string","description":"http or https URL. Empty string turns the webhook off. localhost, *.localhost, *.internal and private, loopback, link-local or reserved IP addresses are refused; a host name that resolves only to such addresses is refused when sending.","uniqueKey":"webhooks.alert_triggered.url","typeLabel":"string"},"headers":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"webhooks.alert_triggered.headers.additionalProperties","typeLabel":"string"},"description":"Extra request headers, e.g. a shared secret. Replaces all headers of this webhook; {} removes them. Left out, the headers stay.","uniqueKey":"webhooks.alert_triggered.headers","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"webhooks.alert_triggered","typeLabel":"object"}},"isRequired":true,"uniqueKey":"webhooks","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"webhooks":{"job_completed":{"url":"https://hooks.example.com/hellotracks/jobs","headers":{"Authorization":"Bearer s3cr3t-example"}},"clock_in_out":{"url":""}}},"examples":{"Example":{"title":"Example","value":{"webhooks":{"job_completed":{"url":"https://hooks.example.com/hellotracks/jobs","headers":{"Authorization":"Bearer s3cr3t-example"}},"clock_in_out":{"url":""}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"5b649d0a-0731-4639-bda3-84685dd3ed96":{"description":"All webhooks after the change.","content":{"application/json":{"schema":{"type":"object","required":["data","error","meta"],"properties":{"data":{"type":"object","properties":{"webhooks":{"type":"object","description":"All nine webhooks, keyed by event.","properties":{"job_created":{"type":"object","description":"A job was created.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.job_created.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.job_created.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.job_created.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.job_created.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.job_created","typeLabel":"object"},"job_updated":{"type":"object","description":"A job was changed.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.job_updated.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.job_updated.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.job_updated.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.job_updated.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.job_updated","typeLabel":"object"},"job_completed":{"type":"object","description":"A job was completed (done or failed).","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.job_completed.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.job_completed.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.job_completed.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.job_completed.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.job_completed","typeLabel":"object"},"job_archived":{"type":"object","description":"A job was archived.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.job_archived.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.job_archived.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.job_archived.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.job_archived.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.job_archived","typeLabel":"object"},"job_deleted":{"type":"object","description":"A job was deleted.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.job_deleted.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.job_deleted.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.job_deleted.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.job_deleted.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.job_deleted","typeLabel":"object"},"job_checked":{"type":"object","description":"A worker checked in or out at a job.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.job_checked.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.job_checked.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.job_checked.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.job_checked.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.job_checked","typeLabel":"object"},"place_checked":{"type":"object","description":"A worker checked in or out at a place.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.place_checked.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.place_checked.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.place_checked.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.place_checked.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.place_checked","typeLabel":"object"},"clock_in_out":{"type":"object","description":"A worker clocked in or out.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.clock_in_out.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.clock_in_out.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.clock_in_out.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.clock_in_out.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.clock_in_out","typeLabel":"object"},"alert_triggered":{"type":"object","description":"An alert fired.","properties":{"url":{"type":"string","format":"uri","description":"Absent or empty when the webhook is off.","uniqueKey":"data.webhooks.alert_triggered.url","typeLabel":"string\u003curi>"},"hasHeaders":{"type":"boolean","uniqueKey":"data.webhooks.alert_triggered.hasHeaders","typeLabel":"boolean"},"headerNames":{"type":"array","items":{"type":"string","uniqueKey":"data.webhooks.alert_triggered.headerNames.items.[INDEX]","typeLabel":"string"},"description":"Names of the extra headers sent; their values are never returned.","uniqueKey":"data.webhooks.alert_triggered.headerNames","typeLabel":"string[]"}},"uniqueKey":"data.webhooks.alert_triggered","typeLabel":"object"}},"uniqueKey":"data.webhooks","typeLabel":"object"}},"isRequired":true,"uniqueKey":"data","typeLabel":"object"},"error":{"type":"null","isRequired":true,"uniqueKey":"error","typeLabel":"null"},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The request path, without /v1.","example":"/jobs","uniqueKey":"meta.path","typeLabel":"string"},"method":{"type":"string","example":"GET","uniqueKey":"meta.method","typeLabel":"string"}},"isRequired":true,"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":{"webhooks":{"job_created":{"hasHeaders":false,"headerNames":[]},"job_updated":{"hasHeaders":false,"headerNames":[]},"job_completed":{"url":"https://hooks.example.com/hellotracks/jobs","hasHeaders":true,"headerNames":["Authorization"]},"job_archived":{"hasHeaders":false,"headerNames":[]},"job_deleted":{"hasHeaders":false,"headerNames":[]},"job_checked":{"hasHeaders":false,"headerNames":[]},"place_checked":{"hasHeaders":false,"headerNames":[]},"clock_in_out":{"hasHeaders":false,"headerNames":[]},"alert_triggered":{"hasHeaders":false,"headerNames":[]}}},"error":null,"meta":{"path":"/v1/webhooks","method":"PUT"}},"examples":{"Example":{"title":"Example","value":{"data":{"webhooks":{"job_created":{"hasHeaders":false,"headerNames":[]},"job_updated":{"hasHeaders":false,"headerNames":[]},"job_completed":{"url":"https://hooks.example.com/hellotracks/jobs","hasHeaders":true,"headerNames":["Authorization"]},"job_archived":{"hasHeaders":false,"headerNames":[]},"job_deleted":{"hasHeaders":false,"headerNames":[]},"job_checked":{"hasHeaders":false,"headerNames":[]},"place_checked":{"hasHeaders":false,"headerNames":[]},"clock_in_out":{"hasHeaders":false,"headerNames":[]},"alert_triggered":{"hasHeaders":false,"headerNames":[]}}},"error":null,"meta":{"path":"/v1/webhooks","method":"PUT"}}}},"exampleType":"examples"}},"exampleType":"examples"},"374e73d5-4267-4051-8f0c-92ee0b6619c4":{"description":"The request is invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null","uniqueKey":"data","typeLabel":"null"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code for programs.","enum":["invalid_request","invalid_format","invalid_data","invalid_api_key","unknown_user","authentication_failed","forbidden","not_found","already_exists","throttled","not_ready","clock_invalid","force_logout","internal_error","unknown_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Why it failed, for people.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The request path, without /v1.","example":"/jobs","uniqueKey":"meta.path","typeLabel":"string"},"method":{"type":"string","example":"GET","uniqueKey":"meta.method","typeLabel":"string"}},"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":null,"error":{"code":"invalid_request","message":"date must be YYYY-MM-DD"},"meta":{"path":"/jobs","method":"GET"}},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"invalid_request","message":"date must be YYYY-MM-DD"},"meta":{"path":"/jobs","method":"GET"}}}},"exampleType":"examples"}},"exampleType":"examples"},"be1f01ba-4b53-4723-8d03-163fe0687b0c":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null","uniqueKey":"data","typeLabel":"null"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code for programs.","enum":["invalid_request","invalid_format","invalid_data","invalid_api_key","unknown_user","authentication_failed","forbidden","not_found","already_exists","throttled","not_ready","clock_invalid","force_logout","internal_error","unknown_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Why it failed, for people.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The request path, without /v1.","example":"/jobs","uniqueKey":"meta.path","typeLabel":"string"},"method":{"type":"string","example":"GET","uniqueKey":"meta.method","typeLabel":"string"}},"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":null,"error":{"code":"invalid_api_key","message":"Invalid Hellotracks API key."},"meta":{"path":"/jobs","method":"GET"}},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"invalid_api_key","message":"Invalid Hellotracks API key."},"meta":{"path":"/jobs","method":"GET"}}}},"exampleType":"examples"}},"exampleType":"examples"},"35d3c40d-31ba-46d8-b1f7-f24fab170062":{"description":"The key may not do this.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null","uniqueKey":"data","typeLabel":"null"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code for programs.","enum":["invalid_request","invalid_format","invalid_data","invalid_api_key","unknown_user","authentication_failed","forbidden","not_found","already_exists","throttled","not_ready","clock_invalid","force_logout","internal_error","unknown_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Why it failed, for people.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The request path, without /v1.","example":"/jobs","uniqueKey":"meta.path","typeLabel":"string"},"method":{"type":"string","example":"GET","uniqueKey":"meta.method","typeLabel":"string"}},"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":null,"error":{"code":"forbidden","message":"No permission."},"meta":{"path":"/jobs","method":"GET"}},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"forbidden","message":"No permission."},"meta":{"path":"/jobs","method":"GET"}}}},"exampleType":"examples"}},"exampleType":"examples"},"940869a2-c08b-4b0d-8744-cb5f2348fa7f":{"description":"Too many requests; slow down.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"null","uniqueKey":"data","typeLabel":"null"},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable error code for programs.","enum":["invalid_request","invalid_format","invalid_data","invalid_api_key","unknown_user","authentication_failed","forbidden","not_found","already_exists","throttled","not_ready","clock_invalid","force_logout","internal_error","unknown_error"],"isRequired":true,"uniqueKey":"error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Why it failed, for people.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"}},"uniqueKey":"error","typeLabel":"object"},"meta":{"type":"object","properties":{"path":{"type":"string","description":"The request path, without /v1.","example":"/jobs","uniqueKey":"meta.path","typeLabel":"string"},"method":{"type":"string","example":"GET","uniqueKey":"meta.method","typeLabel":"string"}},"uniqueKey":"meta","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":null,"error":{"code":"throttled","message":"Too many requests."},"meta":{"path":"/jobs","method":"GET"}},"examples":{"Example":{"title":"Example","value":{"data":null,"error":{"code":"throttled","message":"Too many requests."},"meta":{"path":"/jobs","method":"GET"}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"82c7e45e-4c5c-4eb3-8d32-71a74101e06c":{"ApiKey":{"type":"apiKey","in":"header","name":"API-Key","description":"Your API key, from More → API \u0026 Integrations in the dashboard, or from ht signup / ht auth login.","scopes":[],"schemeName":"ApiKey"}}},"servers":{"58bcea14-c37e-4bbc-bd59-e61bb9978210":{"url":"https://api.hellotracks.com/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"API-Key","description":"Your API key, from More → API \u0026 Integrations in the dashboard, or from ht signup / ht auth login.","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"API-Key","type":"string","description":"Your API key, from More → API \u0026 Integrations in the dashboard, or from ht signup / ht auth login.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKey","name":"API-Key"}],"title":"ApiKey"}]},"originalFileLocation":"v1/openapi.json"},"subdomain":"hellotracks","siteName":"Hellotracks developer docs","title":"Set webhooks - Hellotracks developer docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T13:39:17.256Z","originalFileLocation":"v1/reference/webhooks/set-webhooks.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=\"system\"}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=\"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (invalid_data), and the message says which webhook and why, for example \u0026quot;webhook job_created: not a public host\u0026quot;. Admins and company keys only, because webhooks carry the company\u0026#x27;s secrets in their headers; operators and workers get 403.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Hellotracks developer docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_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/hellotracks/Mukku1hgsB6vFQWq/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Set webhooks - Hellotracks developer docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (invalid_data), and the message says which webhook and why, for example \u0026quot;webhook job_created: not a public host\u0026quot;. Admins and company keys only, because webhooks carry the company\u0026#x27;s secrets in their headers; operators and workers get 403.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Hellotracks developer docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://hellotracks.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Set+webhooks\u0026amp;description=Sets+the+URL+and+extra+headers+of+the+webhooks+sent.+Only+the+webhooks+and+fields+sent+change.+Private%2C+loopback+and+localhost+URLs+are+refused+with+400+%28%60inval\u0026amp;theme=8e96cdb371124c7fdc0c80f1\u0026amp;signature=4f22fae5d242eee424dc6cbbbfa5e10bfe122ce9543bb1e73b496344e3af0ac1\">\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=\"Set webhooks - Hellotracks developer docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (invalid_data), and the message says which webhook and why, for example \u0026quot;webhook job_created: not a public host\u0026quot;. Admins and company keys only, because webhooks carry the company\u0026#x27;s secrets in their headers; operators and workers get 403.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://hellotracks.mintlify.app/_mintlify/api/og/v2?division=Webhooks\u0026amp;title=Set+webhooks\u0026amp;description=Sets+the+URL+and+extra+headers+of+the+webhooks+sent.+Only+the+webhooks+and+fields+sent+change.+Private%2C+loopback+and+localhost+URLs+are+refused+with+400+%28%60inval\u0026amp;theme=8e96cdb371124c7fdc0c80f1\u0026amp;signature=4f22fae5d242eee424dc6cbbbfa5e10bfe122ce9543bb1e73b496344e3af0ac1\">\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/hellotracks/Mukku1hgsB6vFQWq/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Hellotracks developer docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#22C328\">\u003clink data-mint-head rel=\"canonical\" href=\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v1/reference/webhooks/set-webhooks.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://api-docs.hellotracks.com/#organization\",\"name\":\"Hellotracks developer docs\",\"url\":\"https://api-docs.hellotracks.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/hellotracks/Ef0Eqx61i3dR12gk/logo/light.svg?fit=max\u0026auto=format\u0026n=Ef0Eqx61i3dR12gk\u0026q=85\u0026s=3402609a99cee9b7f7698ffe4729c386\"}},{\"@type\":\"WebSite\",\"@id\":\"https://api-docs.hellotracks.com#website\",\"name\":\"Hellotracks developer docs\",\"url\":\"https://api-docs.hellotracks.com\",\"publisher\":{\"@id\":\"https://api-docs.hellotracks.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks#webpage\",\"url\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks\",\"name\":\"Set webhooks\",\"description\":\"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (invalid_data), and the message says which webhook and why, for example \\\"webhook job_created: not a public host\\\". Admins and company keys only, because webhooks carry the company's secrets in their headers; operators and workers get 403.\",\"dateModified\":\"2026-11-02T13:39:17.256Z\",\"isPartOf\":{\"@id\":\"https://api-docs.hellotracks.com#website\"},\"breadcrumb\":{\"@id\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Webhooks\",\"item\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/list-webhooks\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Set webhooks\",\"item\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks#apireference\",\"headline\":\"Set webhooks\",\"name\":\"Set webhooks\",\"description\":\"Sets the URL and extra headers of the webhooks sent. Only the webhooks and fields sent change. Private, loopback and localhost URLs are refused with 400 (invalid_data), and the message says which webhook and why, for example \\\"webhook job_created: not a public host\\\". Admins and company keys only, because webhooks carry the company's secrets in their headers; operators and workers get 403.\",\"url\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks\",\"mainEntityOfPage\":{\"@id\":\"https://api-docs.hellotracks.com/v1/reference/webhooks/set-webhooks#webpage\"},\"dateModified\":\"2026-11-02T13:39:17.256Z\",\"publisher\":{\"@id\":\"https://api-docs.hellotracks.com/#organization\"},\"isPartOf\":{\"@id\":\"https://api-docs.hellotracks.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Hellotracks developer docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Hellotracks developer docs","nav":{"global":null,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/introduction"}]},{"tab":"JSON API","pages":[{"title":"JSON API","href":"/api-reference/overview"}]},{"tab":"REST API","groups":[{"group":"Get Started","pages":[{"title":"REST API overview","href":"/v1/overview"},{"title":"No-code connectors","href":"/v1/no-code-connectors"}]},{"group":"Sign-up and sign-in","pages":[{"title":"Start a sign-up","openapi":"v1/openapi.json POST /signup","href":"/v1/reference/sign-up-and-sign-in/create-signup"},{"title":"Finish a sign-up","openapi":"v1/openapi.json POST /signup/verify","href":"/v1/reference/sign-up-and-sign-in/verify-signup"},{"title":"Email a sign-in code","openapi":"v1/openapi.json POST /auth/email-code","href":"/v1/reference/sign-up-and-sign-in/request-email-code"},{"title":"Sign in with the code","openapi":"v1/openapi.json POST /auth/email-code/verify","href":"/v1/reference/sign-up-and-sign-in/verify-email-code"},{"title":"Show the key's account","openapi":"v1/openapi.json GET /auth/whoami","href":"/v1/reference/sign-up-and-sign-in/get-who-am-i"}]},{"group":"Company","pages":[{"title":"Get the company","openapi":"v1/openapi.json GET /company","href":"/v1/reference/company/get-company"},{"title":"Change the company","openapi":"v1/openapi.json PATCH /company","href":"/v1/reference/company/update-company"}]},{"group":"Members","pages":[{"title":"List members","openapi":"v1/openapi.json GET /members","href":"/v1/reference/members/list-members"},{"title":"Add a member","openapi":"v1/openapi.json POST /members","href":"/v1/reference/members/create-member"},{"title":"Get a member","openapi":"v1/openapi.json GET /members/{id}","href":"/v1/reference/members/get-member"},{"title":"Change a member","openapi":"v1/openapi.json PATCH /members/{id}","href":"/v1/reference/members/update-member"},{"title":"Remove a member","openapi":"v1/openapi.json DELETE /members/{id}","href":"/v1/reference/members/delete-member"}]},{"group":"API keys","pages":[{"title":"List API keys","openapi":"v1/openapi.json GET /apikeys","href":"/v1/reference/api-keys/list-api-keys"},{"title":"Create an API key","openapi":"v1/openapi.json POST /apikeys","href":"/v1/reference/api-keys/create-api-key"},{"title":"Revoke an API key","openapi":"v1/openapi.json POST /apikeys/{id}/revoke","href":"/v1/reference/api-keys/revoke-api-key"},{"title":"Delete an API key","openapi":"v1/openapi.json DELETE /apikeys/{id}","href":"/v1/reference/api-keys/delete-api-key"}]},{"group":"Jobs","pages":[{"title":"List jobs","openapi":"v1/openapi.json GET /jobs","href":"/v1/reference/jobs/list-jobs"},{"title":"Create jobs","openapi":"v1/openapi.json POST /jobs","href":"/v1/reference/jobs/create-jobs"},{"title":"Update jobs","openapi":"v1/openapi.json PATCH /jobs","href":"/v1/reference/jobs/update-jobs"},{"title":"Get a job","openapi":"v1/openapi.json GET /jobs/{id}","href":"/v1/reference/jobs/get-job"},{"title":"Update a job","openapi":"v1/openapi.json PATCH /jobs/{id}","href":"/v1/reference/jobs/update-job"},{"title":"Delete a job","openapi":"v1/openapi.json DELETE /jobs/{id}","href":"/v1/reference/jobs/delete-job"},{"title":"Archive a job","openapi":"v1/openapi.json POST /jobs/{id}/archive","href":"/v1/reference/jobs/archive-job"},{"title":"Restore a job","openapi":"v1/openapi.json POST /jobs/{id}/restore","href":"/v1/reference/jobs/restore-job"}]},{"group":"Places","pages":[{"title":"List places","openapi":"v1/openapi.json GET /places","href":"/v1/reference/places/list-places"},{"title":"Create a place","openapi":"v1/openapi.json POST /places","href":"/v1/reference/places/create-place"},{"title":"Get a place","openapi":"v1/openapi.json GET /places/{id}","href":"/v1/reference/places/get-place"},{"title":"Update a place","openapi":"v1/openapi.json PATCH /places/{id}","href":"/v1/reference/places/update-place"},{"title":"Delete a place","openapi":"v1/openapi.json DELETE /places/{id}","href":"/v1/reference/places/delete-place"}]},{"group":"Zones","pages":[{"title":"List zones","openapi":"v1/openapi.json GET /zones","href":"/v1/reference/zones/list-zones"}]},{"group":"Routing","pages":[{"title":"Optimize a route","openapi":"v1/openapi.json POST /routing/optimize","href":"/v1/reference/routing/optimize-route"}]},{"group":"ETA pages","pages":[{"title":"List ETA sessions","openapi":"v1/openapi.json GET /eta/sessions","href":"/v1/reference/eta-pages/list-eta-sessions"},{"title":"Create an ETA session","openapi":"v1/openapi.json POST /eta/sessions","href":"/v1/reference/eta-pages/create-eta-session"},{"title":"Get an ETA session","openapi":"v1/openapi.json GET /eta/sessions/{id}","href":"/v1/reference/eta-pages/get-eta-session"},{"title":"Update an ETA session","openapi":"v1/openapi.json PATCH /eta/sessions/{id}","href":"/v1/reference/eta-pages/update-eta-session"},{"title":"Revoke an ETA session","openapi":"v1/openapi.json DELETE /eta/sessions/{id}","href":"/v1/reference/eta-pages/revoke-eta-session"},{"title":"Refresh an ETA session","openapi":"v1/openapi.json POST /eta/sessions/{id}/refresh","href":"/v1/reference/eta-pages/refresh-eta-session"},{"title":"List ETA session events","openapi":"v1/openapi.json GET /eta/sessions/{id}/events","href":"/v1/reference/eta-pages/list-eta-session-events"}]},{"group":"Maps","pages":[{"title":"List map layers","openapi":"v1/openapi.json GET /maps/layers","href":"/v1/reference/maps/list-map-layers"},{"title":"Render a map","openapi":"v1/openapi.json POST /maps/render","href":"/v1/reference/maps/render-map"},{"title":"List map shares","openapi":"v1/openapi.json GET /maps/shares","href":"/v1/reference/maps/list-map-shares"},{"title":"Create a map share","openapi":"v1/openapi.json POST /maps/shares","href":"/v1/reference/maps/create-map-share"},{"title":"Get a map share","openapi":"v1/openapi.json GET /maps/shares/{token}","href":"/v1/reference/maps/get-map-share"},{"title":"Revoke a map share","openapi":"v1/openapi.json DELETE /maps/shares/{token}","href":"/v1/reference/maps/revoke-map-share"}]},{"group":"Timesheets","pages":[{"title":"List timesheet entries","openapi":"v1/openapi.json GET /timesheets","href":"/v1/reference/timesheets/list-timesheets"},{"title":"Add a timesheet entry","openapi":"v1/openapi.json POST /timesheets/entries","href":"/v1/reference/timesheets/create-timesheet-entry"},{"title":"Change a timesheet entry","openapi":"v1/openapi.json PATCH /timesheets/entries/{id}","href":"/v1/reference/timesheets/update-timesheet-entry"},{"title":"Delete a timesheet entry","openapi":"v1/openapi.json DELETE /timesheets/entries/{id}","href":"/v1/reference/timesheets/delete-timesheet-entry"}]},{"group":"Forms","pages":[{"title":"List form templates","openapi":"v1/openapi.json GET /forms/templates","href":"/v1/reference/forms/list-form-templates"},{"title":"Create a form template","openapi":"v1/openapi.json POST /forms/templates","href":"/v1/reference/forms/create-form-template"},{"title":"Get a form template","openapi":"v1/openapi.json GET /forms/templates/{id}","href":"/v1/reference/forms/get-form-template"},{"title":"Update a form template","openapi":"v1/openapi.json PATCH /forms/templates/{id}","href":"/v1/reference/forms/update-form-template"},{"title":"Delete a form template","openapi":"v1/openapi.json DELETE /forms/templates/{id}","href":"/v1/reference/forms/delete-form-template"},{"title":"List form submissions","openapi":"v1/openapi.json GET /forms/submissions","href":"/v1/reference/forms/list-form-submissions"},{"title":"Submit a form","openapi":"v1/openapi.json POST /forms/submissions","href":"/v1/reference/forms/create-form-submission"},{"title":"Get a form submission","openapi":"v1/openapi.json GET /forms/submissions/{id}","href":"/v1/reference/forms/get-form-submission"},{"title":"Upload a form attachment","openapi":"v1/openapi.json POST /forms/attachments","href":"/v1/reference/forms/upload-form-attachment"},{"title":"List linked forms","openapi":"v1/openapi.json GET /forms/links","href":"/v1/reference/forms/list-form-links"},{"title":"Link a form","openapi":"v1/openapi.json POST /forms/links","href":"/v1/reference/forms/link-form"},{"title":"Unlink a form","openapi":"v1/openapi.json DELETE /forms/links","href":"/v1/reference/forms/unlink-form"}]},{"group":"Alerts","pages":[{"title":"List alert actions","openapi":"v1/openapi.json GET /alerts/actions","href":"/v1/reference/alerts/list-alert-actions"},{"title":"List alert rules","openapi":"v1/openapi.json GET /alerts/configs","href":"/v1/reference/alerts/list-alert-configs"},{"title":"Create an alert rule","openapi":"v1/openapi.json POST /alerts/configs","href":"/v1/reference/alerts/create-alert-config"},{"title":"Get an alert rule","openapi":"v1/openapi.json GET /alerts/configs/{id}","href":"/v1/reference/alerts/get-alert-config"},{"title":"Update an alert rule","openapi":"v1/openapi.json PATCH /alerts/configs/{id}","href":"/v1/reference/alerts/update-alert-config"},{"title":"Delete an alert rule","openapi":"v1/openapi.json DELETE /alerts/configs/{id}","href":"/v1/reference/alerts/delete-alert-config"},{"title":"List alerts","openapi":"v1/openapi.json GET /alerts/instances","href":"/v1/reference/alerts/list-alert-instances"},{"title":"Get an alert","openapi":"v1/openapi.json GET /alerts/instances/{id}","href":"/v1/reference/alerts/get-alert-instance"},{"title":"Update an alert","openapi":"v1/openapi.json PATCH /alerts/instances/{id}","href":"/v1/reference/alerts/update-alert-instance"},{"title":"Delete an alert","openapi":"v1/openapi.json DELETE /alerts/instances/{id}","href":"/v1/reference/alerts/delete-alert-instance"}]},{"group":"Reports","pages":[{"title":"List newer reports","openapi":"v1/openapi.json GET /reports/catalog","href":"/v1/reference/reports/list-report-catalog"},{"title":"Preview a report","openapi":"v1/openapi.json POST /reports/preview","href":"/v1/reference/reports/preview-report"},{"title":"Start a report run","openapi":"v1/openapi.json POST /reports/run","href":"/v1/reference/reports/run-report"},{"title":"Get a report run","openapi":"v1/openapi.json GET /reports/run/{id}","href":"/v1/reference/reports/get-report-run"},{"title":"List saved reports","openapi":"v1/openapi.json GET /reports/saved","href":"/v1/reference/reports/list-saved-reports"},{"title":"Save a report","openapi":"v1/openapi.json POST /reports/saved","href":"/v1/reference/reports/create-saved-report"},{"title":"Replace a saved report","openapi":"v1/openapi.json PATCH /reports/saved/{id}","href":"/v1/reference/reports/update-saved-report"},{"title":"Delete a saved report","openapi":"v1/openapi.json DELETE /reports/saved/{id}","href":"/v1/reference/reports/delete-saved-report"},{"title":"Send a saved report now","openapi":"v1/openapi.json POST /reports/saved/{id}/send","href":"/v1/reference/reports/send-saved-report"},{"title":"List older report types","openapi":"v1/openapi.json GET /reports/types","href":"/v1/reference/reports/list-report-types"},{"title":"Generate an older report","openapi":"v1/openapi.json POST /reports/generate","href":"/v1/reference/reports/generate-report"},{"title":"List open report jobs","openapi":"v1/openapi.json GET /reports/jobs","href":"/v1/reference/reports/list-report-jobs"},{"title":"Get a report job","openapi":"v1/openapi.json GET /reports/jobs/{id}","href":"/v1/reference/reports/get-report-job"},{"title":"List report files","openapi":"v1/openapi.json GET /reports/uploads","href":"/v1/reference/reports/list-report-uploads"},{"title":"List recurring reports","openapi":"v1/openapi.json GET /reports/recurring","href":"/v1/reference/reports/list-recurring-reports"},{"title":"Create a recurring report","openapi":"v1/openapi.json POST /reports/recurring","href":"/v1/reference/reports/create-recurring-report"},{"title":"Update a recurring report","openapi":"v1/openapi.json PATCH /reports/recurring/{id}","href":"/v1/reference/reports/update-recurring-report"},{"title":"Delete a recurring report","openapi":"v1/openapi.json DELETE /reports/recurring/{id}","href":"/v1/reference/reports/delete-recurring-report"}]},{"group":"Webhooks","pages":[{"title":"List webhooks","openapi":"v1/openapi.json GET /webhooks","description":"Returns all nine webhooks with their URL and the names of their extra headers; header values are never returned. Admins and company keys only, because webhooks carry the company's secrets in their headers; operators and workers get 403.","href":"/v1/reference/webhooks/list-webhooks"},{"title":"Set webhooks","openapi":"v1/openapi.json PUT /webhooks","href":"/v1/reference/webhooks/set-webhooks"}]}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]}]},"basePath":"","title":"Set webhooks - Hellotracks developer docs","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CS552b7R.js","utils-DDTCYAF2.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-De8ttokP.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-DrwRDvAh.js","snippetPresets-DtAN0nWx.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D5rWArI6.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-O2i12wsz.js","shallow-DV8xABTt.js","getApiPlaygroundDisplay-DBZ0B5Jx.js","CodeSnippet-BVi0tPUX.js","CodeSnippets-CqASbIwY.js","Page-m07pfKpT.js","getPastedJson-DG9vsMS8.js","icon-CXzRSCr8.js","MethodPill-BdKVtEuX.js","DuplicateIcon-CZlmBrJI.js","createIcon-biFEUKPL.js","DynamicMarkdown-B54_zNBF.js","SectionHeading-DwwHK3Pt.js","axios-vUo_bRtp.js","Markdown-DfhCTwyA.js","clsx-xpJZXxdP.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BTZUMDnx.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-DqdKa2R4.js"]}