[{"data":1,"prerenderedAt":3926},["ShallowReactive",2],{"navigation_docs":3,"-api-reference-webhooks":67,"-api-reference-webhooks-surround":3921},[4,41],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":40},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Authentication","\u002Fgetting-started\u002Fauthentication","1.getting-started\u002F3.authentication","i-lucide-key-round",{"title":21,"path":22,"stem":23,"icon":24},"Quickstart","\u002Fgetting-started\u002Fquickstart","1.getting-started\u002F4.quickstart","i-lucide-zap",{"title":26,"path":27,"stem":28,"icon":29},"Base URL","\u002Fgetting-started\u002Fbase-url","1.getting-started\u002F5.base-url","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Responses","\u002Fgetting-started\u002Fresponses","1.getting-started\u002F6.responses","i-lucide-braces",{"title":36,"path":37,"stem":38,"icon":39},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F7.troubleshooting","i-lucide-circle-help",false,{"title":42,"icon":43,"path":44,"stem":45,"children":46,"page":40},"API reference","i-lucide-book-open","\u002Fapi-reference","2.api-reference",[47,52,57,62],{"title":48,"path":49,"stem":50,"icon":51},"Sessions","\u002Fapi-reference\u002Fsessions","2.api-reference\u002F1.sessions","i-lucide-smartphone",{"title":53,"path":54,"stem":55,"icon":56},"Messages","\u002Fapi-reference\u002Fmessages","2.api-reference\u002F2.messages","i-lucide-message-square",{"title":58,"path":59,"stem":60,"icon":61},"Webhooks","\u002Fapi-reference\u002Fwebhooks","2.api-reference\u002F3.webhooks","i-lucide-webhook",{"title":63,"path":64,"stem":65,"icon":66},"Limits and errors","\u002Fapi-reference\u002Flimits-and-errors","2.api-reference\u002F4.limits-and-errors","i-lucide-shield-alert",{"id":68,"title":58,"body":69,"description":3912,"extension":3913,"links":3914,"meta":3915,"navigation":3916,"path":59,"seo":3917,"stem":60,"__hash__":3920},"docs\u002F2.api-reference\u002F3.webhooks.md",{"type":70,"value":71,"toc":3881},"minimark",[72,76,88,93,136,140,156,259,262,392,396,400,403,469,472,481,484,488,491,511,515,518,535,546,1326,1334,1338,1341,1377,1380,1384,1387,1452,1457,1460,1463,1467,1837,1841,2294,2298,2521,2525,2533,2601,2620,2629,2633,2642,3047,3103,3107,3110,3116,3153,3160,3164,3168,3447,3453,3457,3463,3547,3552,3555,3674,3678,3704,3708,3717,3754,3760,3764,3767,3844,3847,3851,3877],[73,74,75],"p",{},"Webhooks let your backend receive inbound WhatsApp messages as they arrive.",[73,77,78,79,83,84,87],{},"ChatKazi sends each event as an HTTP ",[80,81,82],"code",{},"POST"," request to your configured URL. Your endpoint should verify the request signature before processing the event and return a ",[80,85,86],{},"2xx"," response within 10 seconds.",[89,90,92],"h2",{"id":91},"how-webhooks-work","How webhooks work",[94,95,96,101,104,108,115,119,126,130],"steps",{},[97,98,100],"h3",{"id":99},"configure-an-endpoint","Configure an endpoint",[73,102,103],{},"Save a public HTTP or HTTPS URL where ChatKazi can send events.",[97,105,107],{"id":106},"store-the-signing-secret","Store the signing secret",[73,109,110,111,114],{},"The first save returns a signing secret beginning with ",[80,112,113],{},"whsec_",". Store it securely because later reads only show whether a secret exists.",[97,116,118],{"id":117},"verify-every-request","Verify every request",[73,120,121,122,125],{},"Use the signing secret, timestamp header, and raw request body to verify the ",[80,123,124],{},"X-ChatKazi-Signature"," header.",[97,127,129],{"id":128},"process-the-event","Process the event",[73,131,132,133,135],{},"After verification, parse the JSON body and handle the event. Return any ",[80,134,86],{}," status to mark the delivery as successful.",[89,137,139],{"id":138},"configure-a-webhook","Configure a webhook",[141,142,147],"pre",{"className":143,"code":144,"language":145,"meta":146,"style":146},"language-txt shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","PATCH \u002Fwebhook\n","txt","",[80,148,149],{"__ignoreMap":146},[150,151,154],"span",{"class":152,"line":153},"line",1,[150,155,144],{},[141,157,162],{"className":158,"code":159,"filename":160,"language":161,"meta":146,"style":146},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -X PATCH \"$CHATKAZI_BASE_URL\u002Fwebhook\" \\\n  -H \"x-api-key: $CHATKAZI_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fyour-app.com\u002Fwebhooks\u002Fchatkazi\",\n    \"enabled\": true\n  }'\n","Terminal","bash",[80,163,164,194,212,226,238,244,250],{"__ignoreMap":146},[150,165,166,170,174,177,181,185,188,191],{"class":152,"line":153},[150,167,169],{"class":168},"sBMFI","curl",[150,171,173],{"class":172},"sfazB"," -X",[150,175,176],{"class":172}," PATCH",[150,178,180],{"class":179},"sMK4o"," \"",[150,182,184],{"class":183},"sTEyZ","$CHATKAZI_BASE_URL",[150,186,187],{"class":172},"\u002Fwebhook",[150,189,190],{"class":179},"\"",[150,192,193],{"class":183}," \\\n",[150,195,197,200,202,205,208,210],{"class":152,"line":196},2,[150,198,199],{"class":172},"  -H",[150,201,180],{"class":179},[150,203,204],{"class":172},"x-api-key: ",[150,206,207],{"class":183},"$CHATKAZI_API_KEY",[150,209,190],{"class":179},[150,211,193],{"class":183},[150,213,215,217,219,222,224],{"class":152,"line":214},3,[150,216,199],{"class":172},[150,218,180],{"class":179},[150,220,221],{"class":172},"Content-Type: application\u002Fjson",[150,223,190],{"class":179},[150,225,193],{"class":183},[150,227,229,232,235],{"class":152,"line":228},4,[150,230,231],{"class":172},"  -d",[150,233,234],{"class":179}," '",[150,236,237],{"class":172},"{\n",[150,239,241],{"class":152,"line":240},5,[150,242,243],{"class":172},"    \"url\": \"https:\u002F\u002Fyour-app.com\u002Fwebhooks\u002Fchatkazi\",\n",[150,245,247],{"class":152,"line":246},6,[150,248,249],{"class":172},"    \"enabled\": true\n",[150,251,253,256],{"class":152,"line":252},7,[150,254,255],{"class":172},"  }",[150,257,258],{"class":179},"'\n",[73,260,261],{},"The first save returns the signing secret once:",[141,263,268],{"className":264,"code":265,"filename":266,"language":267,"meta":146,"style":146},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"message\": \"Webhook saved.\",\n  \"data\": {\n    \"url\": \"https:\u002F\u002Fyour-app.com\u002Fwebhooks\u002Fchatkazi\",\n    \"enabled\": true,\n    \"hasSecret\": true\n  },\n  \"secret\": \"whsec_your_signing_secret\"\n}\n","Response","json",[80,269,270,274,298,312,333,347,361,366,386],{"__ignoreMap":146},[150,271,272],{"class":152,"line":153},[150,273,237],{"class":179},[150,275,276,279,283,285,288,290,293,295],{"class":152,"line":196},[150,277,278],{"class":179},"  \"",[150,280,282],{"class":281},"spNyl","message",[150,284,190],{"class":179},[150,286,287],{"class":179},":",[150,289,180],{"class":179},[150,291,292],{"class":172},"Webhook saved.",[150,294,190],{"class":179},[150,296,297],{"class":179},",\n",[150,299,300,302,305,307,309],{"class":152,"line":214},[150,301,278],{"class":179},[150,303,304],{"class":281},"data",[150,306,190],{"class":179},[150,308,287],{"class":179},[150,310,311],{"class":179}," {\n",[150,313,314,317,320,322,324,326,329,331],{"class":152,"line":228},[150,315,316],{"class":179},"    \"",[150,318,319],{"class":168},"url",[150,321,190],{"class":179},[150,323,287],{"class":179},[150,325,180],{"class":179},[150,327,328],{"class":172},"https:\u002F\u002Fyour-app.com\u002Fwebhooks\u002Fchatkazi",[150,330,190],{"class":179},[150,332,297],{"class":179},[150,334,335,337,340,342,344],{"class":152,"line":240},[150,336,316],{"class":179},[150,338,339],{"class":168},"enabled",[150,341,190],{"class":179},[150,343,287],{"class":179},[150,345,346],{"class":179}," true,\n",[150,348,349,351,354,356,358],{"class":152,"line":246},[150,350,316],{"class":179},[150,352,353],{"class":168},"hasSecret",[150,355,190],{"class":179},[150,357,287],{"class":179},[150,359,360],{"class":179}," true\n",[150,362,363],{"class":152,"line":252},[150,364,365],{"class":179},"  },\n",[150,367,369,371,374,376,378,380,383],{"class":152,"line":368},8,[150,370,278],{"class":179},[150,372,373],{"class":281},"secret",[150,375,190],{"class":179},[150,377,287],{"class":179},[150,379,180],{"class":179},[150,381,382],{"class":172},"whsec_your_signing_secret",[150,384,385],{"class":179},"\"\n",[150,387,389],{"class":152,"line":388},9,[150,390,391],{"class":179},"}\n",[393,394,395],"warning",{"icon":19},"Store the signing secret in your backend environment variables or secret manager. Do not expose it in browser code, logs, or source control.",[89,397,399],{"id":398},"webhook-request-headers","Webhook request headers",[73,401,402],{},"Every delivery includes these headers:",[404,405,406,419],"table",{},[407,408,409],"thead",{},[410,411,412,416],"tr",{},[413,414,415],"th",{},"Header",[413,417,418],{},"Description",[420,421,422,437,447,457],"tbody",{},[410,423,424,430],{},[425,426,427],"td",{},[80,428,429],{},"X-ChatKazi-Event",[425,431,432,433,436],{},"Event type, such as ",[80,434,435],{},"message.received",".",[410,438,439,444],{},[425,440,441],{},[80,442,443],{},"X-ChatKazi-Delivery",[425,445,446],{},"Unique delivery ID for logging and deduplication.",[410,448,449,454],{},[425,450,451],{},[80,452,453],{},"X-ChatKazi-Timestamp",[425,455,456],{},"ISO 8601 time used to create the signature.",[410,458,459,463],{},[425,460,461],{},[80,462,124],{},[425,464,465,466,436],{},"HMAC-SHA256 signature in the form ",[80,467,468],{},"sha256=\u003Chex_digest>",[73,470,471],{},"ChatKazi creates the signature from:",[141,473,475],{"className":143,"code":474,"language":145,"meta":146,"style":146},"timestamp + \".\" + raw_request_body\n",[80,476,477],{"__ignoreMap":146},[150,478,479],{"class":152,"line":153},[150,480,474],{},[73,482,483],{},"The request body must be used exactly as received. Re-serializing parsed JSON can produce a different signature.",[97,485,487],{"id":486},"signing-secret-scope","Signing secret scope",[73,489,490],{},"Each ChatKazi account has one configured webhook destination and one signing secret. The same secret signs events from every WhatsApp session owned by that account.",[492,493,494,498,505,508],"ul",{},[495,496,497],"li",{},"A valid signature proves that ChatKazi created the request for your account.",[495,499,500,501,504],{},"The signature does not identify a specific WhatsApp session. Use the payload's ",[80,502,503],{},"sessionId"," for that.",[495,506,507],{},"Rotating the signing secret immediately replaces the previous secret.",[495,509,510],{},"If separate systems need to receive events, configure one webhook endpoint and forward verified events from that endpoint.",[89,512,514],{"id":513},"verify-the-signing-secret","Verify the signing secret",[73,516,517],{},"Set your signing secret on the server:",[141,519,522],{"className":158,"code":520,"filename":521,"language":161,"meta":146,"style":146},"CHATKAZI_WEBHOOK_SECRET=whsec_your_signing_secret\n",".env",[80,523,524],{"__ignoreMap":146},[150,525,526,529,532],{"class":152,"line":153},[150,527,528],{"class":183},"CHATKAZI_WEBHOOK_SECRET",[150,530,531],{"class":179},"=",[150,533,534],{"class":172},"whsec_your_signing_secret\n",[73,536,537,538,541,542,545],{},"In Express, register the webhook route with ",[80,539,540],{},"express.raw()"," before any global ",[80,543,544],{},"express.json()"," middleware:",[141,547,552],{"className":548,"code":549,"filename":550,"language":551,"meta":146,"style":146},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import crypto from 'node:crypto'\nimport express from 'express'\n\nconst app = express()\n\napp.post('\u002Fwebhooks\u002Fchatkazi', express.raw({ type: 'application\u002Fjson' }), (req, res) => {\n  const secret = process.env.CHATKAZI_WEBHOOK_SECRET\n  const timestamp = req.get('X-ChatKazi-Timestamp')\n  const receivedSignature = req.get('X-ChatKazi-Signature')\n  const rawBody = req.body.toString('utf8')\n\n  if (!secret || !timestamp || !receivedSignature) {\n    return res.status(400).send('Missing webhook signature')\n  }\n\n  const expectedSignature = `sha256=${crypto\n    .createHmac('sha256', secret)\n    .update(`${timestamp}.${rawBody}`)\n    .digest('hex')}`\n\n  const received = Buffer.from(receivedSignature)\n  const expected = Buffer.from(expectedSignature)\n  const valid =\n    received.length === expected.length &&\n    crypto.timingSafeEqual(received, expected)\n\n  if (!valid) {\n    return res.status(401).send('Invalid webhook signature')\n  }\n\n  const event = JSON.parse(rawBody)\n\n  if (event.event === 'message.received') {\n    console.log('Inbound message:', event.message.text)\n  }\n\n  return res.sendStatus(204)\n})\n\napp.use(express.json())\napp.listen(3000)\n","webhook-server.js","js",[80,553,554,573,589,595,612,616,692,716,744,769,802,807,841,878,884,889,911,934,964,986,991,1014,1037,1048,1071,1093,1098,1114,1147,1152,1157,1181,1186,1212,1247,1252,1257,1277,1284,1289,1309],{"__ignoreMap":146},[150,555,556,560,563,566,568,571],{"class":152,"line":153},[150,557,559],{"class":558},"s7zQu","import",[150,561,562],{"class":183}," crypto ",[150,564,565],{"class":558},"from",[150,567,234],{"class":179},[150,569,570],{"class":172},"node:crypto",[150,572,258],{"class":179},[150,574,575,577,580,582,584,587],{"class":152,"line":196},[150,576,559],{"class":558},[150,578,579],{"class":183}," express ",[150,581,565],{"class":558},[150,583,234],{"class":179},[150,585,586],{"class":172},"express",[150,588,258],{"class":179},[150,590,591],{"class":152,"line":214},[150,592,594],{"emptyLinePlaceholder":593},true,"\n",[150,596,597,600,603,605,609],{"class":152,"line":228},[150,598,599],{"class":281},"const",[150,601,602],{"class":183}," app ",[150,604,531],{"class":179},[150,606,608],{"class":607},"s2Zo4"," express",[150,610,611],{"class":183},"()\n",[150,613,614],{"class":152,"line":240},[150,615,594],{"emptyLinePlaceholder":593},[150,617,618,621,623,626,629,632,635,637,640,642,644,647,649,652,656,658,660,663,665,668,671,673,676,680,682,685,687,690],{"class":152,"line":246},[150,619,620],{"class":183},"app",[150,622,436],{"class":179},[150,624,625],{"class":607},"post",[150,627,628],{"class":183},"(",[150,630,631],{"class":179},"'",[150,633,634],{"class":172},"\u002Fwebhooks\u002Fchatkazi",[150,636,631],{"class":179},[150,638,639],{"class":179},",",[150,641,608],{"class":183},[150,643,436],{"class":179},[150,645,646],{"class":607},"raw",[150,648,628],{"class":183},[150,650,651],{"class":179},"{",[150,653,655],{"class":654},"swJcz"," type",[150,657,287],{"class":179},[150,659,234],{"class":179},[150,661,662],{"class":172},"application\u002Fjson",[150,664,631],{"class":179},[150,666,667],{"class":179}," }",[150,669,670],{"class":183},")",[150,672,639],{"class":179},[150,674,675],{"class":179}," (",[150,677,679],{"class":678},"sHdIc","req",[150,681,639],{"class":179},[150,683,684],{"class":678}," res",[150,686,670],{"class":179},[150,688,689],{"class":281}," =>",[150,691,311],{"class":179},[150,693,694,697,700,703,706,708,711,713],{"class":152,"line":252},[150,695,696],{"class":281},"  const",[150,698,699],{"class":183}," secret",[150,701,702],{"class":179}," =",[150,704,705],{"class":183}," process",[150,707,436],{"class":179},[150,709,710],{"class":183},"env",[150,712,436],{"class":179},[150,714,715],{"class":183},"CHATKAZI_WEBHOOK_SECRET\n",[150,717,718,720,723,725,728,730,733,735,737,739,741],{"class":152,"line":368},[150,719,696],{"class":281},[150,721,722],{"class":183}," timestamp",[150,724,702],{"class":179},[150,726,727],{"class":183}," req",[150,729,436],{"class":179},[150,731,732],{"class":607},"get",[150,734,628],{"class":654},[150,736,631],{"class":179},[150,738,453],{"class":172},[150,740,631],{"class":179},[150,742,743],{"class":654},")\n",[150,745,746,748,751,753,755,757,759,761,763,765,767],{"class":152,"line":388},[150,747,696],{"class":281},[150,749,750],{"class":183}," receivedSignature",[150,752,702],{"class":179},[150,754,727],{"class":183},[150,756,436],{"class":179},[150,758,732],{"class":607},[150,760,628],{"class":654},[150,762,631],{"class":179},[150,764,124],{"class":172},[150,766,631],{"class":179},[150,768,743],{"class":654},[150,770,772,774,777,779,781,783,786,788,791,793,795,798,800],{"class":152,"line":771},10,[150,773,696],{"class":281},[150,775,776],{"class":183}," rawBody",[150,778,702],{"class":179},[150,780,727],{"class":183},[150,782,436],{"class":179},[150,784,785],{"class":183},"body",[150,787,436],{"class":179},[150,789,790],{"class":607},"toString",[150,792,628],{"class":654},[150,794,631],{"class":179},[150,796,797],{"class":172},"utf8",[150,799,631],{"class":179},[150,801,743],{"class":654},[150,803,805],{"class":152,"line":804},11,[150,806,594],{"emptyLinePlaceholder":593},[150,808,810,813,815,818,820,823,826,829,831,833,836,839],{"class":152,"line":809},12,[150,811,812],{"class":558},"  if",[150,814,675],{"class":654},[150,816,817],{"class":179},"!",[150,819,373],{"class":183},[150,821,822],{"class":179}," ||",[150,824,825],{"class":179}," !",[150,827,828],{"class":183},"timestamp",[150,830,822],{"class":179},[150,832,825],{"class":179},[150,834,835],{"class":183},"receivedSignature",[150,837,838],{"class":654},") ",[150,840,237],{"class":179},[150,842,844,847,849,851,854,856,860,862,864,867,869,871,874,876],{"class":152,"line":843},13,[150,845,846],{"class":558},"    return",[150,848,684],{"class":183},[150,850,436],{"class":179},[150,852,853],{"class":607},"status",[150,855,628],{"class":654},[150,857,859],{"class":858},"sbssI","400",[150,861,670],{"class":654},[150,863,436],{"class":179},[150,865,866],{"class":607},"send",[150,868,628],{"class":654},[150,870,631],{"class":179},[150,872,873],{"class":172},"Missing webhook signature",[150,875,631],{"class":179},[150,877,743],{"class":654},[150,879,881],{"class":152,"line":880},14,[150,882,883],{"class":179},"  }\n",[150,885,887],{"class":152,"line":886},15,[150,888,594],{"emptyLinePlaceholder":593},[150,890,892,894,897,899,902,905,908],{"class":152,"line":891},16,[150,893,696],{"class":281},[150,895,896],{"class":183}," expectedSignature",[150,898,702],{"class":179},[150,900,901],{"class":179}," `",[150,903,904],{"class":172},"sha256=",[150,906,907],{"class":179},"${",[150,909,910],{"class":183},"crypto\n",[150,912,914,917,920,922,924,927,929,931],{"class":152,"line":913},17,[150,915,916],{"class":179},"    .",[150,918,919],{"class":607},"createHmac",[150,921,628],{"class":183},[150,923,631],{"class":179},[150,925,926],{"class":172},"sha256",[150,928,631],{"class":179},[150,930,639],{"class":179},[150,932,933],{"class":183}," secret)\n",[150,935,937,939,942,944,947,949,952,954,956,959,962],{"class":152,"line":936},18,[150,938,916],{"class":179},[150,940,941],{"class":607},"update",[150,943,628],{"class":183},[150,945,946],{"class":179},"`${",[150,948,828],{"class":183},[150,950,951],{"class":179},"}",[150,953,436],{"class":172},[150,955,907],{"class":179},[150,957,958],{"class":183},"rawBody",[150,960,961],{"class":179},"}`",[150,963,743],{"class":183},[150,965,967,969,972,974,976,979,981,983],{"class":152,"line":966},19,[150,968,916],{"class":179},[150,970,971],{"class":607},"digest",[150,973,628],{"class":183},[150,975,631],{"class":179},[150,977,978],{"class":172},"hex",[150,980,631],{"class":179},[150,982,670],{"class":183},[150,984,985],{"class":179},"}`\n",[150,987,989],{"class":152,"line":988},20,[150,990,594],{"emptyLinePlaceholder":593},[150,992,994,996,999,1001,1004,1006,1008,1010,1012],{"class":152,"line":993},21,[150,995,696],{"class":281},[150,997,998],{"class":183}," received",[150,1000,702],{"class":179},[150,1002,1003],{"class":183}," Buffer",[150,1005,436],{"class":179},[150,1007,565],{"class":607},[150,1009,628],{"class":654},[150,1011,835],{"class":183},[150,1013,743],{"class":654},[150,1015,1017,1019,1022,1024,1026,1028,1030,1032,1035],{"class":152,"line":1016},22,[150,1018,696],{"class":281},[150,1020,1021],{"class":183}," expected",[150,1023,702],{"class":179},[150,1025,1003],{"class":183},[150,1027,436],{"class":179},[150,1029,565],{"class":607},[150,1031,628],{"class":654},[150,1033,1034],{"class":183},"expectedSignature",[150,1036,743],{"class":654},[150,1038,1040,1042,1045],{"class":152,"line":1039},23,[150,1041,696],{"class":281},[150,1043,1044],{"class":183}," valid",[150,1046,1047],{"class":179}," =\n",[150,1049,1051,1054,1056,1059,1062,1064,1066,1068],{"class":152,"line":1050},24,[150,1052,1053],{"class":183},"    received",[150,1055,436],{"class":179},[150,1057,1058],{"class":183},"length",[150,1060,1061],{"class":179}," ===",[150,1063,1021],{"class":183},[150,1065,436],{"class":179},[150,1067,1058],{"class":183},[150,1069,1070],{"class":179}," &&\n",[150,1072,1074,1077,1079,1082,1084,1087,1089,1091],{"class":152,"line":1073},25,[150,1075,1076],{"class":183},"    crypto",[150,1078,436],{"class":179},[150,1080,1081],{"class":607},"timingSafeEqual",[150,1083,628],{"class":654},[150,1085,1086],{"class":183},"received",[150,1088,639],{"class":179},[150,1090,1021],{"class":183},[150,1092,743],{"class":654},[150,1094,1096],{"class":152,"line":1095},26,[150,1097,594],{"emptyLinePlaceholder":593},[150,1099,1101,1103,1105,1107,1110,1112],{"class":152,"line":1100},27,[150,1102,812],{"class":558},[150,1104,675],{"class":654},[150,1106,817],{"class":179},[150,1108,1109],{"class":183},"valid",[150,1111,838],{"class":654},[150,1113,237],{"class":179},[150,1115,1117,1119,1121,1123,1125,1127,1130,1132,1134,1136,1138,1140,1143,1145],{"class":152,"line":1116},28,[150,1118,846],{"class":558},[150,1120,684],{"class":183},[150,1122,436],{"class":179},[150,1124,853],{"class":607},[150,1126,628],{"class":654},[150,1128,1129],{"class":858},"401",[150,1131,670],{"class":654},[150,1133,436],{"class":179},[150,1135,866],{"class":607},[150,1137,628],{"class":654},[150,1139,631],{"class":179},[150,1141,1142],{"class":172},"Invalid webhook signature",[150,1144,631],{"class":179},[150,1146,743],{"class":654},[150,1148,1150],{"class":152,"line":1149},29,[150,1151,883],{"class":179},[150,1153,1155],{"class":152,"line":1154},30,[150,1156,594],{"emptyLinePlaceholder":593},[150,1158,1160,1162,1165,1167,1170,1172,1175,1177,1179],{"class":152,"line":1159},31,[150,1161,696],{"class":281},[150,1163,1164],{"class":183}," event",[150,1166,702],{"class":179},[150,1168,1169],{"class":183}," JSON",[150,1171,436],{"class":179},[150,1173,1174],{"class":607},"parse",[150,1176,628],{"class":654},[150,1178,958],{"class":183},[150,1180,743],{"class":654},[150,1182,1184],{"class":152,"line":1183},32,[150,1185,594],{"emptyLinePlaceholder":593},[150,1187,1189,1191,1193,1196,1198,1200,1202,1204,1206,1208,1210],{"class":152,"line":1188},33,[150,1190,812],{"class":558},[150,1192,675],{"class":654},[150,1194,1195],{"class":183},"event",[150,1197,436],{"class":179},[150,1199,1195],{"class":183},[150,1201,1061],{"class":179},[150,1203,234],{"class":179},[150,1205,435],{"class":172},[150,1207,631],{"class":179},[150,1209,838],{"class":654},[150,1211,237],{"class":179},[150,1213,1215,1218,1220,1223,1225,1227,1230,1232,1234,1236,1238,1240,1242,1245],{"class":152,"line":1214},34,[150,1216,1217],{"class":183},"    console",[150,1219,436],{"class":179},[150,1221,1222],{"class":607},"log",[150,1224,628],{"class":654},[150,1226,631],{"class":179},[150,1228,1229],{"class":172},"Inbound message:",[150,1231,631],{"class":179},[150,1233,639],{"class":179},[150,1235,1164],{"class":183},[150,1237,436],{"class":179},[150,1239,282],{"class":183},[150,1241,436],{"class":179},[150,1243,1244],{"class":183},"text",[150,1246,743],{"class":654},[150,1248,1250],{"class":152,"line":1249},35,[150,1251,883],{"class":179},[150,1253,1255],{"class":152,"line":1254},36,[150,1256,594],{"emptyLinePlaceholder":593},[150,1258,1260,1263,1265,1267,1270,1272,1275],{"class":152,"line":1259},37,[150,1261,1262],{"class":558},"  return",[150,1264,684],{"class":183},[150,1266,436],{"class":179},[150,1268,1269],{"class":607},"sendStatus",[150,1271,628],{"class":654},[150,1273,1274],{"class":858},"204",[150,1276,743],{"class":654},[150,1278,1280,1282],{"class":152,"line":1279},38,[150,1281,951],{"class":179},[150,1283,743],{"class":183},[150,1285,1287],{"class":152,"line":1286},39,[150,1288,594],{"emptyLinePlaceholder":593},[150,1290,1292,1294,1296,1299,1302,1304,1306],{"class":152,"line":1291},40,[150,1293,620],{"class":183},[150,1295,436],{"class":179},[150,1297,1298],{"class":607},"use",[150,1300,1301],{"class":183},"(express",[150,1303,436],{"class":179},[150,1305,267],{"class":607},[150,1307,1308],{"class":183},"())\n",[150,1310,1312,1314,1316,1319,1321,1324],{"class":152,"line":1311},41,[150,1313,620],{"class":183},[150,1315,436],{"class":179},[150,1317,1318],{"class":607},"listen",[150,1320,628],{"class":183},[150,1322,1323],{"class":858},"3000",[150,1325,743],{"class":183},[1327,1328,1330,1331,1333],"note",{"icon":1329},"i-lucide-shield-check","For replay protection, reject timestamps that are too old for your application and use ",[80,1332,443],{}," to ignore deliveries you have already processed.",[89,1335,1337],{"id":1336},"event-types","Event types",[73,1339,1340],{},"ChatKazi currently sends these webhook event types:",[404,1342,1343,1353],{},[407,1344,1345],{},[410,1346,1347,1350],{},[413,1348,1349],{},"Event",[413,1351,1352],{},"Sent when",[420,1354,1355,1364],{},[410,1356,1357,1361],{},[425,1358,1359],{},[80,1360,435],{},[425,1362,1363],{},"A connected WhatsApp session receives a message from a contact, group, channel, or newsletter.",[410,1365,1366,1371],{},[425,1367,1368],{},[80,1369,1370],{},"webhook.test",[425,1372,1373,1374,436],{},"You request a test delivery with ",[80,1375,1376],{},"POST \u002Fwebhook\u002Ftest",[73,1378,1379],{},"ChatKazi does not currently send webhook events for outbound messages, message delivery receipts, session state changes, or QR updates.",[89,1381,1383],{"id":1382},"common-event-fields","Common event fields",[73,1385,1386],{},"Every webhook payload includes these top-level fields:",[404,1388,1389,1401],{},[407,1390,1391],{},[410,1392,1393,1396,1399],{},[413,1394,1395],{},"Field",[413,1397,1398],{},"Type",[413,1400,418],{},[420,1402,1403,1415,1426,1438],{},[410,1404,1405,1409,1412],{},[425,1406,1407],{},[80,1408,1195],{},[425,1410,1411],{},"string",[425,1413,1414],{},"Event type. Use this field to select the correct event handler.",[410,1416,1417,1421,1423],{},[425,1418,1419],{},[80,1420,828],{},[425,1422,1411],{},[425,1424,1425],{},"ISO 8601 time when ChatKazi created the event.",[410,1427,1428,1433,1435],{},[425,1429,1430],{},[80,1431,1432],{},"customerId",[425,1434,1411],{},[425,1436,1437],{},"ChatKazi account that owns the session and webhook.",[410,1439,1440,1444,1446],{},[425,1441,1442],{},[80,1443,503],{},[425,1445,1411],{},[425,1447,1448,1449,436],{},"Connected WhatsApp session that produced the event. Test events use ",[80,1450,1451],{},"default",[89,1453,1455],{"id":1454},"messagereceived",[80,1456,435],{},[73,1458,1459],{},"Sent when a connected WhatsApp session receives a message.",[73,1461,1462],{},"Messages sent by the connected WhatsApp account itself and WhatsApp status broadcasts are ignored.",[97,1464,1466],{"id":1465},"direct-message-example","Direct message example",[141,1468,1470],{"className":264,"code":1469,"filename":435,"language":267,"meta":146,"style":146},"{\n  \"event\": \"message.received\",\n  \"timestamp\": \"2026-06-05T12:00:01.125Z\",\n  \"customerId\": \"customer_id\",\n  \"sessionId\": \"default\",\n  \"message\": {\n    \"id\": \"AC7BA799EE6E7A886B3C1BF59F57FDDD\",\n    \"from\": \"254712345678@s.whatsapp.net\",\n    \"replyTo\": \"254712345678@s.whatsapp.net\",\n    \"phoneNumber\": \"254712345678\",\n    \"chat\": \"194446171848909@lid\",\n    \"participant\": null,\n    \"rawFrom\": \"194446171848909@lid\",\n    \"rawChat\": \"194446171848909@lid\",\n    \"fromMe\": false,\n    \"pushName\": \"Customer\",\n    \"type\": \"conversation\",\n    \"text\": \"Hello\",\n    \"interaction\": null,\n    \"media\": null,\n    \"messageTimestamp\": \"2026-06-05T12:00:00.000Z\"\n  }\n}\n",[80,1471,1472,1476,1494,1513,1532,1550,1562,1582,1601,1620,1640,1660,1674,1693,1712,1726,1746,1766,1785,1798,1811,1829,1833],{"__ignoreMap":146},[150,1473,1474],{"class":152,"line":153},[150,1475,237],{"class":179},[150,1477,1478,1480,1482,1484,1486,1488,1490,1492],{"class":152,"line":196},[150,1479,278],{"class":179},[150,1481,1195],{"class":281},[150,1483,190],{"class":179},[150,1485,287],{"class":179},[150,1487,180],{"class":179},[150,1489,435],{"class":172},[150,1491,190],{"class":179},[150,1493,297],{"class":179},[150,1495,1496,1498,1500,1502,1504,1506,1509,1511],{"class":152,"line":214},[150,1497,278],{"class":179},[150,1499,828],{"class":281},[150,1501,190],{"class":179},[150,1503,287],{"class":179},[150,1505,180],{"class":179},[150,1507,1508],{"class":172},"2026-06-05T12:00:01.125Z",[150,1510,190],{"class":179},[150,1512,297],{"class":179},[150,1514,1515,1517,1519,1521,1523,1525,1528,1530],{"class":152,"line":228},[150,1516,278],{"class":179},[150,1518,1432],{"class":281},[150,1520,190],{"class":179},[150,1522,287],{"class":179},[150,1524,180],{"class":179},[150,1526,1527],{"class":172},"customer_id",[150,1529,190],{"class":179},[150,1531,297],{"class":179},[150,1533,1534,1536,1538,1540,1542,1544,1546,1548],{"class":152,"line":240},[150,1535,278],{"class":179},[150,1537,503],{"class":281},[150,1539,190],{"class":179},[150,1541,287],{"class":179},[150,1543,180],{"class":179},[150,1545,1451],{"class":172},[150,1547,190],{"class":179},[150,1549,297],{"class":179},[150,1551,1552,1554,1556,1558,1560],{"class":152,"line":246},[150,1553,278],{"class":179},[150,1555,282],{"class":281},[150,1557,190],{"class":179},[150,1559,287],{"class":179},[150,1561,311],{"class":179},[150,1563,1564,1566,1569,1571,1573,1575,1578,1580],{"class":152,"line":252},[150,1565,316],{"class":179},[150,1567,1568],{"class":168},"id",[150,1570,190],{"class":179},[150,1572,287],{"class":179},[150,1574,180],{"class":179},[150,1576,1577],{"class":172},"AC7BA799EE6E7A886B3C1BF59F57FDDD",[150,1579,190],{"class":179},[150,1581,297],{"class":179},[150,1583,1584,1586,1588,1590,1592,1594,1597,1599],{"class":152,"line":368},[150,1585,316],{"class":179},[150,1587,565],{"class":168},[150,1589,190],{"class":179},[150,1591,287],{"class":179},[150,1593,180],{"class":179},[150,1595,1596],{"class":172},"254712345678@s.whatsapp.net",[150,1598,190],{"class":179},[150,1600,297],{"class":179},[150,1602,1603,1605,1608,1610,1612,1614,1616,1618],{"class":152,"line":388},[150,1604,316],{"class":179},[150,1606,1607],{"class":168},"replyTo",[150,1609,190],{"class":179},[150,1611,287],{"class":179},[150,1613,180],{"class":179},[150,1615,1596],{"class":172},[150,1617,190],{"class":179},[150,1619,297],{"class":179},[150,1621,1622,1624,1627,1629,1631,1633,1636,1638],{"class":152,"line":771},[150,1623,316],{"class":179},[150,1625,1626],{"class":168},"phoneNumber",[150,1628,190],{"class":179},[150,1630,287],{"class":179},[150,1632,180],{"class":179},[150,1634,1635],{"class":172},"254712345678",[150,1637,190],{"class":179},[150,1639,297],{"class":179},[150,1641,1642,1644,1647,1649,1651,1653,1656,1658],{"class":152,"line":804},[150,1643,316],{"class":179},[150,1645,1646],{"class":168},"chat",[150,1648,190],{"class":179},[150,1650,287],{"class":179},[150,1652,180],{"class":179},[150,1654,1655],{"class":172},"194446171848909@lid",[150,1657,190],{"class":179},[150,1659,297],{"class":179},[150,1661,1662,1664,1667,1669,1671],{"class":152,"line":809},[150,1663,316],{"class":179},[150,1665,1666],{"class":168},"participant",[150,1668,190],{"class":179},[150,1670,287],{"class":179},[150,1672,1673],{"class":179}," null,\n",[150,1675,1676,1678,1681,1683,1685,1687,1689,1691],{"class":152,"line":843},[150,1677,316],{"class":179},[150,1679,1680],{"class":168},"rawFrom",[150,1682,190],{"class":179},[150,1684,287],{"class":179},[150,1686,180],{"class":179},[150,1688,1655],{"class":172},[150,1690,190],{"class":179},[150,1692,297],{"class":179},[150,1694,1695,1697,1700,1702,1704,1706,1708,1710],{"class":152,"line":880},[150,1696,316],{"class":179},[150,1698,1699],{"class":168},"rawChat",[150,1701,190],{"class":179},[150,1703,287],{"class":179},[150,1705,180],{"class":179},[150,1707,1655],{"class":172},[150,1709,190],{"class":179},[150,1711,297],{"class":179},[150,1713,1714,1716,1719,1721,1723],{"class":152,"line":886},[150,1715,316],{"class":179},[150,1717,1718],{"class":168},"fromMe",[150,1720,190],{"class":179},[150,1722,287],{"class":179},[150,1724,1725],{"class":179}," false,\n",[150,1727,1728,1730,1733,1735,1737,1739,1742,1744],{"class":152,"line":891},[150,1729,316],{"class":179},[150,1731,1732],{"class":168},"pushName",[150,1734,190],{"class":179},[150,1736,287],{"class":179},[150,1738,180],{"class":179},[150,1740,1741],{"class":172},"Customer",[150,1743,190],{"class":179},[150,1745,297],{"class":179},[150,1747,1748,1750,1753,1755,1757,1759,1762,1764],{"class":152,"line":913},[150,1749,316],{"class":179},[150,1751,1752],{"class":168},"type",[150,1754,190],{"class":179},[150,1756,287],{"class":179},[150,1758,180],{"class":179},[150,1760,1761],{"class":172},"conversation",[150,1763,190],{"class":179},[150,1765,297],{"class":179},[150,1767,1768,1770,1772,1774,1776,1778,1781,1783],{"class":152,"line":936},[150,1769,316],{"class":179},[150,1771,1244],{"class":168},[150,1773,190],{"class":179},[150,1775,287],{"class":179},[150,1777,180],{"class":179},[150,1779,1780],{"class":172},"Hello",[150,1782,190],{"class":179},[150,1784,297],{"class":179},[150,1786,1787,1789,1792,1794,1796],{"class":152,"line":966},[150,1788,316],{"class":179},[150,1790,1791],{"class":168},"interaction",[150,1793,190],{"class":179},[150,1795,287],{"class":179},[150,1797,1673],{"class":179},[150,1799,1800,1802,1805,1807,1809],{"class":152,"line":988},[150,1801,316],{"class":179},[150,1803,1804],{"class":168},"media",[150,1806,190],{"class":179},[150,1808,287],{"class":179},[150,1810,1673],{"class":179},[150,1812,1813,1815,1818,1820,1822,1824,1827],{"class":152,"line":993},[150,1814,316],{"class":179},[150,1816,1817],{"class":168},"messageTimestamp",[150,1819,190],{"class":179},[150,1821,287],{"class":179},[150,1823,180],{"class":179},[150,1825,1826],{"class":172},"2026-06-05T12:00:00.000Z",[150,1828,385],{"class":179},[150,1830,1831],{"class":152,"line":1016},[150,1832,883],{"class":179},[150,1834,1835],{"class":152,"line":1039},[150,1836,391],{"class":179},[97,1838,1840],{"id":1839},"group-media-message-example","Group media message example",[141,1842,1845],{"className":264,"code":1843,"filename":1844,"language":267,"meta":146,"style":146},"{\n  \"event\": \"message.received\",\n  \"timestamp\": \"2026-06-05T12:05:01.125Z\",\n  \"customerId\": \"customer_id\",\n  \"sessionId\": \"support\",\n  \"message\": {\n    \"id\": \"A5376359CDF8B3B2D67FECB863393B54\",\n    \"from\": \"254798765432@s.whatsapp.net\",\n    \"replyTo\": \"120363333241980924@g.us\",\n    \"phoneNumber\": \"254798765432\",\n    \"chat\": \"120363333241980924@g.us\",\n    \"participant\": \"247871504945317@lid\",\n    \"rawFrom\": \"247871504945317@lid\",\n    \"rawChat\": \"120363333241980924@g.us\",\n    \"fromMe\": false,\n    \"pushName\": \"Customer\",\n    \"type\": \"imageMessage\",\n    \"text\": \"Invoice attached\",\n    \"interaction\": null,\n    \"media\": {\n      \"type\": \"image\",\n      \"mimetype\": \"image\u002Fjpeg\",\n      \"fileName\": null,\n      \"caption\": \"Invoice attached\",\n      \"seconds\": null\n    },\n    \"messageTimestamp\": \"2026-06-05T12:05:00.000Z\"\n  }\n}\n","message.received group image",[80,1846,1847,1851,1869,1888,1906,1925,1937,1956,1975,1994,2013,2031,2050,2068,2086,2098,2116,2135,2154,2166,2178,2198,2218,2231,2250,2264,2269,2286,2290],{"__ignoreMap":146},[150,1848,1849],{"class":152,"line":153},[150,1850,237],{"class":179},[150,1852,1853,1855,1857,1859,1861,1863,1865,1867],{"class":152,"line":196},[150,1854,278],{"class":179},[150,1856,1195],{"class":281},[150,1858,190],{"class":179},[150,1860,287],{"class":179},[150,1862,180],{"class":179},[150,1864,435],{"class":172},[150,1866,190],{"class":179},[150,1868,297],{"class":179},[150,1870,1871,1873,1875,1877,1879,1881,1884,1886],{"class":152,"line":214},[150,1872,278],{"class":179},[150,1874,828],{"class":281},[150,1876,190],{"class":179},[150,1878,287],{"class":179},[150,1880,180],{"class":179},[150,1882,1883],{"class":172},"2026-06-05T12:05:01.125Z",[150,1885,190],{"class":179},[150,1887,297],{"class":179},[150,1889,1890,1892,1894,1896,1898,1900,1902,1904],{"class":152,"line":228},[150,1891,278],{"class":179},[150,1893,1432],{"class":281},[150,1895,190],{"class":179},[150,1897,287],{"class":179},[150,1899,180],{"class":179},[150,1901,1527],{"class":172},[150,1903,190],{"class":179},[150,1905,297],{"class":179},[150,1907,1908,1910,1912,1914,1916,1918,1921,1923],{"class":152,"line":240},[150,1909,278],{"class":179},[150,1911,503],{"class":281},[150,1913,190],{"class":179},[150,1915,287],{"class":179},[150,1917,180],{"class":179},[150,1919,1920],{"class":172},"support",[150,1922,190],{"class":179},[150,1924,297],{"class":179},[150,1926,1927,1929,1931,1933,1935],{"class":152,"line":246},[150,1928,278],{"class":179},[150,1930,282],{"class":281},[150,1932,190],{"class":179},[150,1934,287],{"class":179},[150,1936,311],{"class":179},[150,1938,1939,1941,1943,1945,1947,1949,1952,1954],{"class":152,"line":252},[150,1940,316],{"class":179},[150,1942,1568],{"class":168},[150,1944,190],{"class":179},[150,1946,287],{"class":179},[150,1948,180],{"class":179},[150,1950,1951],{"class":172},"A5376359CDF8B3B2D67FECB863393B54",[150,1953,190],{"class":179},[150,1955,297],{"class":179},[150,1957,1958,1960,1962,1964,1966,1968,1971,1973],{"class":152,"line":368},[150,1959,316],{"class":179},[150,1961,565],{"class":168},[150,1963,190],{"class":179},[150,1965,287],{"class":179},[150,1967,180],{"class":179},[150,1969,1970],{"class":172},"254798765432@s.whatsapp.net",[150,1972,190],{"class":179},[150,1974,297],{"class":179},[150,1976,1977,1979,1981,1983,1985,1987,1990,1992],{"class":152,"line":388},[150,1978,316],{"class":179},[150,1980,1607],{"class":168},[150,1982,190],{"class":179},[150,1984,287],{"class":179},[150,1986,180],{"class":179},[150,1988,1989],{"class":172},"120363333241980924@g.us",[150,1991,190],{"class":179},[150,1993,297],{"class":179},[150,1995,1996,1998,2000,2002,2004,2006,2009,2011],{"class":152,"line":771},[150,1997,316],{"class":179},[150,1999,1626],{"class":168},[150,2001,190],{"class":179},[150,2003,287],{"class":179},[150,2005,180],{"class":179},[150,2007,2008],{"class":172},"254798765432",[150,2010,190],{"class":179},[150,2012,297],{"class":179},[150,2014,2015,2017,2019,2021,2023,2025,2027,2029],{"class":152,"line":804},[150,2016,316],{"class":179},[150,2018,1646],{"class":168},[150,2020,190],{"class":179},[150,2022,287],{"class":179},[150,2024,180],{"class":179},[150,2026,1989],{"class":172},[150,2028,190],{"class":179},[150,2030,297],{"class":179},[150,2032,2033,2035,2037,2039,2041,2043,2046,2048],{"class":152,"line":809},[150,2034,316],{"class":179},[150,2036,1666],{"class":168},[150,2038,190],{"class":179},[150,2040,287],{"class":179},[150,2042,180],{"class":179},[150,2044,2045],{"class":172},"247871504945317@lid",[150,2047,190],{"class":179},[150,2049,297],{"class":179},[150,2051,2052,2054,2056,2058,2060,2062,2064,2066],{"class":152,"line":843},[150,2053,316],{"class":179},[150,2055,1680],{"class":168},[150,2057,190],{"class":179},[150,2059,287],{"class":179},[150,2061,180],{"class":179},[150,2063,2045],{"class":172},[150,2065,190],{"class":179},[150,2067,297],{"class":179},[150,2069,2070,2072,2074,2076,2078,2080,2082,2084],{"class":152,"line":880},[150,2071,316],{"class":179},[150,2073,1699],{"class":168},[150,2075,190],{"class":179},[150,2077,287],{"class":179},[150,2079,180],{"class":179},[150,2081,1989],{"class":172},[150,2083,190],{"class":179},[150,2085,297],{"class":179},[150,2087,2088,2090,2092,2094,2096],{"class":152,"line":886},[150,2089,316],{"class":179},[150,2091,1718],{"class":168},[150,2093,190],{"class":179},[150,2095,287],{"class":179},[150,2097,1725],{"class":179},[150,2099,2100,2102,2104,2106,2108,2110,2112,2114],{"class":152,"line":891},[150,2101,316],{"class":179},[150,2103,1732],{"class":168},[150,2105,190],{"class":179},[150,2107,287],{"class":179},[150,2109,180],{"class":179},[150,2111,1741],{"class":172},[150,2113,190],{"class":179},[150,2115,297],{"class":179},[150,2117,2118,2120,2122,2124,2126,2128,2131,2133],{"class":152,"line":913},[150,2119,316],{"class":179},[150,2121,1752],{"class":168},[150,2123,190],{"class":179},[150,2125,287],{"class":179},[150,2127,180],{"class":179},[150,2129,2130],{"class":172},"imageMessage",[150,2132,190],{"class":179},[150,2134,297],{"class":179},[150,2136,2137,2139,2141,2143,2145,2147,2150,2152],{"class":152,"line":936},[150,2138,316],{"class":179},[150,2140,1244],{"class":168},[150,2142,190],{"class":179},[150,2144,287],{"class":179},[150,2146,180],{"class":179},[150,2148,2149],{"class":172},"Invoice attached",[150,2151,190],{"class":179},[150,2153,297],{"class":179},[150,2155,2156,2158,2160,2162,2164],{"class":152,"line":966},[150,2157,316],{"class":179},[150,2159,1791],{"class":168},[150,2161,190],{"class":179},[150,2163,287],{"class":179},[150,2165,1673],{"class":179},[150,2167,2168,2170,2172,2174,2176],{"class":152,"line":988},[150,2169,316],{"class":179},[150,2171,1804],{"class":168},[150,2173,190],{"class":179},[150,2175,287],{"class":179},[150,2177,311],{"class":179},[150,2179,2180,2183,2185,2187,2189,2191,2194,2196],{"class":152,"line":993},[150,2181,2182],{"class":179},"      \"",[150,2184,1752],{"class":858},[150,2186,190],{"class":179},[150,2188,287],{"class":179},[150,2190,180],{"class":179},[150,2192,2193],{"class":172},"image",[150,2195,190],{"class":179},[150,2197,297],{"class":179},[150,2199,2200,2202,2205,2207,2209,2211,2214,2216],{"class":152,"line":1016},[150,2201,2182],{"class":179},[150,2203,2204],{"class":858},"mimetype",[150,2206,190],{"class":179},[150,2208,287],{"class":179},[150,2210,180],{"class":179},[150,2212,2213],{"class":172},"image\u002Fjpeg",[150,2215,190],{"class":179},[150,2217,297],{"class":179},[150,2219,2220,2222,2225,2227,2229],{"class":152,"line":1039},[150,2221,2182],{"class":179},[150,2223,2224],{"class":858},"fileName",[150,2226,190],{"class":179},[150,2228,287],{"class":179},[150,2230,1673],{"class":179},[150,2232,2233,2235,2238,2240,2242,2244,2246,2248],{"class":152,"line":1050},[150,2234,2182],{"class":179},[150,2236,2237],{"class":858},"caption",[150,2239,190],{"class":179},[150,2241,287],{"class":179},[150,2243,180],{"class":179},[150,2245,2149],{"class":172},[150,2247,190],{"class":179},[150,2249,297],{"class":179},[150,2251,2252,2254,2257,2259,2261],{"class":152,"line":1073},[150,2253,2182],{"class":179},[150,2255,2256],{"class":858},"seconds",[150,2258,190],{"class":179},[150,2260,287],{"class":179},[150,2262,2263],{"class":179}," null\n",[150,2265,2266],{"class":152,"line":1095},[150,2267,2268],{"class":179},"    },\n",[150,2270,2271,2273,2275,2277,2279,2281,2284],{"class":152,"line":1100},[150,2272,316],{"class":179},[150,2274,1817],{"class":168},[150,2276,190],{"class":179},[150,2278,287],{"class":179},[150,2280,180],{"class":179},[150,2282,2283],{"class":172},"2026-06-05T12:05:00.000Z",[150,2285,385],{"class":179},[150,2287,2288],{"class":152,"line":1116},[150,2289,883],{"class":179},[150,2291,2292],{"class":152,"line":1149},[150,2293,391],{"class":179},[97,2295,2297],{"id":2296},"message-fields","Message fields",[404,2299,2300,2310],{},[407,2301,2302],{},[410,2303,2304,2306,2308],{},[413,2305,1395],{},[413,2307,1398],{},[413,2309,418],{},[420,2311,2312,2324,2335,2354,2373,2387,2401,2412,2423,2438,2449,2472,2483,2499,2510],{},[410,2313,2314,2318,2321],{},[425,2315,2316],{},[80,2317,1568],{},[425,2319,2320],{},"string or null",[425,2322,2323],{},"WhatsApp message ID. Store this if you need to deduplicate events.",[410,2325,2326,2330,2332],{},[425,2327,2328],{},[80,2329,565],{},[425,2331,2320],{},[425,2333,2334],{},"Best available identifier for the sender. ChatKazi resolves WhatsApp LID identifiers to phone-number JIDs when possible.",[410,2336,2337,2341,2343],{},[425,2338,2339],{},[80,2340,1607],{},[425,2342,2320],{},[425,2344,2345,2353],{},[2346,2347,2348,2349,2352],"strong",{},"Use this value as ",[80,2350,2351],{},"to"," when replying."," It identifies the direct conversation or group where the reply belongs.",[410,2355,2356,2360,2362],{},[425,2357,2358],{},[80,2359,1626],{},[425,2361,2320],{},[425,2363,2364,2365,2368,2369,2372],{},"Sender phone number without ",[80,2366,2367],{},"+",", when ChatKazi can resolve one. It can be ",[80,2370,2371],{},"null"," for some channels or unresolved identifiers.",[410,2374,2375,2379,2381],{},[425,2376,2377],{},[80,2378,1646],{},[425,2380,2320],{},[425,2382,2383,2384,436],{},"Original WhatsApp conversation identifier. For direct messages this can be a LID; for groups it ends with ",[80,2385,2386],{},"@g.us",[410,2388,2389,2393,2395],{},[425,2390,2391],{},[80,2392,1666],{},[425,2394,2320],{},[425,2396,2397,2398,2400],{},"Original participant identifier for a group message. Usually ",[80,2399,2371],{}," for direct messages.",[410,2402,2403,2407,2409],{},[425,2404,2405],{},[80,2406,1680],{},[425,2408,2320],{},[425,2410,2411],{},"Original sender identifier received from WhatsApp before phone-number resolution.",[410,2413,2414,2418,2420],{},[425,2415,2416],{},[80,2417,1699],{},[425,2419,2320],{},[425,2421,2422],{},"Original conversation identifier received from WhatsApp. Preserve it for diagnostics, but do not normally use it when replying.",[410,2424,2425,2429,2432],{},[425,2426,2427],{},[80,2428,1718],{},[425,2430,2431],{},"boolean",[425,2433,2434,2435,436],{},"Whether the connected WhatsApp account sent the message. Currently emitted inbound events have this set to ",[80,2436,2437],{},"false",[410,2439,2440,2444,2446],{},[425,2441,2442],{},[80,2443,1732],{},[425,2445,2320],{},[425,2447,2448],{},"Sender display name supplied by WhatsApp.",[410,2450,2451,2455,2457],{},[425,2452,2453],{},[80,2454,1752],{},[425,2456,1411],{},[425,2458,2459,2460,2462,2463,2462,2466,2468,2469,436],{},"WhatsApp message content type, such as ",[80,2461,1761],{},", ",[80,2464,2465],{},"extendedTextMessage",[80,2467,2130],{},", or ",[80,2470,2471],{},"documentMessage",[410,2473,2474,2478,2480],{},[425,2475,2476],{},[80,2477,1244],{},[425,2479,1411],{},[425,2481,2482],{},"Extracted text, selected response, or media caption. Empty when the message has no supported text value.",[410,2484,2485,2489,2492],{},[425,2486,2487],{},[80,2488,1791],{},[425,2490,2491],{},"object or null",[425,2493,2494,2495,2498],{},"Structured reply or list selection. Use ",[80,2496,2497],{},"interaction.id"," to route the selected action.",[410,2500,2501,2505,2507],{},[425,2502,2503],{},[80,2504,1804],{},[425,2506,2491],{},[425,2508,2509],{},"Media metadata for supported media messages. ChatKazi does not include the media file itself.",[410,2511,2512,2516,2518],{},[425,2513,2514],{},[80,2515,1817],{},[425,2517,1411],{},[425,2519,2520],{},"ISO 8601 time reported by WhatsApp for the original message.",[97,2522,2524],{"id":2523},"identifier-fields","Identifier fields",[73,2526,2527,2528,2530,2531,436],{},"WhatsApp can represent a user with a phone-number JID such as ",[80,2529,1596],{}," or an internal LID such as ",[80,2532,1655],{},[404,2534,2535,2545],{},[407,2536,2537],{},[410,2538,2539,2542],{},[413,2540,2541],{},"Goal",[413,2543,2544],{},"Field to use",[420,2546,2547,2557,2567,2577,2587],{},[410,2548,2549,2552],{},[425,2550,2551],{},"Reply to the message",[425,2553,2554],{},[80,2555,2556],{},"message.replyTo",[410,2558,2559,2562],{},[425,2560,2561],{},"Identify the sender",[425,2563,2564],{},[80,2565,2566],{},"message.from",[410,2568,2569,2572],{},[425,2570,2571],{},"Read the sender phone number",[425,2573,2574],{},[80,2575,2576],{},"message.phoneNumber",[410,2578,2579,2582],{},[425,2580,2581],{},"Determine the original conversation",[425,2583,2584],{},[80,2585,2586],{},"message.chat",[410,2588,2589,2592],{},[425,2590,2591],{},"Debug the identifiers received from WhatsApp",[425,2593,2594,2597,2598],{},[80,2595,2596],{},"message.rawFrom"," and ",[80,2599,2600],{},"message.rawChat",[393,2602,2604,2605,2597,2607,2609,2610,2462,2612,2462,2614,2462,2616,2468,2618,436],{"icon":2603},"i-lucide-reply","Always send replies using the event's ",[80,2606,503],{},[80,2608,2556],{},". Do not build a reply target from ",[80,2611,1626],{},[80,2613,565],{},[80,2615,1646],{},[80,2617,1680],{},[80,2619,1699],{},[73,2621,2622,2623,2625,2626,2628],{},"For a direct message, ",[80,2624,1607],{}," is normally a resolved phone-number JID. For a group message, ",[80,2627,1607],{}," is the group JID so your response goes back to the group rather than privately to its participant.",[97,2630,2632],{"id":2631},"interactive-response-example","Interactive response example",[73,2634,2635,2636,2638,2639,2641],{},"When a recipient selects a reply button or list row, the same ",[80,2637,435],{}," event includes a structured ",[80,2640,1791],{}," object:",[141,2643,2646],{"className":264,"code":2644,"filename":2645,"language":267,"meta":146,"style":146},"{\n  \"event\": \"message.received\",\n  \"timestamp\": \"2026-06-07T12:00:01.125Z\",\n  \"customerId\": \"customer_id\",\n  \"sessionId\": \"default\",\n  \"message\": {\n    \"id\": \"3EB0F6BBD165A34B\",\n    \"from\": \"254712345678@s.whatsapp.net\",\n    \"replyTo\": \"254712345678@s.whatsapp.net\",\n    \"phoneNumber\": \"254712345678\",\n    \"chat\": \"254712345678@s.whatsapp.net\",\n    \"participant\": null,\n    \"rawFrom\": \"254712345678@s.whatsapp.net\",\n    \"rawChat\": \"254712345678@s.whatsapp.net\",\n    \"fromMe\": false,\n    \"pushName\": \"Customer\",\n    \"type\": \"interactiveResponseMessage\",\n    \"text\": \"track_order\",\n    \"interaction\": {\n      \"type\": \"quick_reply\",\n      \"id\": \"track_order\",\n      \"label\": null\n    },\n    \"media\": null,\n    \"messageTimestamp\": \"2026-06-07T12:00:00.000Z\"\n  }\n}\n","message.received interactive response",[80,2647,2648,2652,2670,2689,2707,2725,2737,2756,2774,2792,2810,2828,2840,2858,2876,2888,2906,2925,2944,2956,2975,2993,3006,3010,3022,3039,3043],{"__ignoreMap":146},[150,2649,2650],{"class":152,"line":153},[150,2651,237],{"class":179},[150,2653,2654,2656,2658,2660,2662,2664,2666,2668],{"class":152,"line":196},[150,2655,278],{"class":179},[150,2657,1195],{"class":281},[150,2659,190],{"class":179},[150,2661,287],{"class":179},[150,2663,180],{"class":179},[150,2665,435],{"class":172},[150,2667,190],{"class":179},[150,2669,297],{"class":179},[150,2671,2672,2674,2676,2678,2680,2682,2685,2687],{"class":152,"line":214},[150,2673,278],{"class":179},[150,2675,828],{"class":281},[150,2677,190],{"class":179},[150,2679,287],{"class":179},[150,2681,180],{"class":179},[150,2683,2684],{"class":172},"2026-06-07T12:00:01.125Z",[150,2686,190],{"class":179},[150,2688,297],{"class":179},[150,2690,2691,2693,2695,2697,2699,2701,2703,2705],{"class":152,"line":228},[150,2692,278],{"class":179},[150,2694,1432],{"class":281},[150,2696,190],{"class":179},[150,2698,287],{"class":179},[150,2700,180],{"class":179},[150,2702,1527],{"class":172},[150,2704,190],{"class":179},[150,2706,297],{"class":179},[150,2708,2709,2711,2713,2715,2717,2719,2721,2723],{"class":152,"line":240},[150,2710,278],{"class":179},[150,2712,503],{"class":281},[150,2714,190],{"class":179},[150,2716,287],{"class":179},[150,2718,180],{"class":179},[150,2720,1451],{"class":172},[150,2722,190],{"class":179},[150,2724,297],{"class":179},[150,2726,2727,2729,2731,2733,2735],{"class":152,"line":246},[150,2728,278],{"class":179},[150,2730,282],{"class":281},[150,2732,190],{"class":179},[150,2734,287],{"class":179},[150,2736,311],{"class":179},[150,2738,2739,2741,2743,2745,2747,2749,2752,2754],{"class":152,"line":252},[150,2740,316],{"class":179},[150,2742,1568],{"class":168},[150,2744,190],{"class":179},[150,2746,287],{"class":179},[150,2748,180],{"class":179},[150,2750,2751],{"class":172},"3EB0F6BBD165A34B",[150,2753,190],{"class":179},[150,2755,297],{"class":179},[150,2757,2758,2760,2762,2764,2766,2768,2770,2772],{"class":152,"line":368},[150,2759,316],{"class":179},[150,2761,565],{"class":168},[150,2763,190],{"class":179},[150,2765,287],{"class":179},[150,2767,180],{"class":179},[150,2769,1596],{"class":172},[150,2771,190],{"class":179},[150,2773,297],{"class":179},[150,2775,2776,2778,2780,2782,2784,2786,2788,2790],{"class":152,"line":388},[150,2777,316],{"class":179},[150,2779,1607],{"class":168},[150,2781,190],{"class":179},[150,2783,287],{"class":179},[150,2785,180],{"class":179},[150,2787,1596],{"class":172},[150,2789,190],{"class":179},[150,2791,297],{"class":179},[150,2793,2794,2796,2798,2800,2802,2804,2806,2808],{"class":152,"line":771},[150,2795,316],{"class":179},[150,2797,1626],{"class":168},[150,2799,190],{"class":179},[150,2801,287],{"class":179},[150,2803,180],{"class":179},[150,2805,1635],{"class":172},[150,2807,190],{"class":179},[150,2809,297],{"class":179},[150,2811,2812,2814,2816,2818,2820,2822,2824,2826],{"class":152,"line":804},[150,2813,316],{"class":179},[150,2815,1646],{"class":168},[150,2817,190],{"class":179},[150,2819,287],{"class":179},[150,2821,180],{"class":179},[150,2823,1596],{"class":172},[150,2825,190],{"class":179},[150,2827,297],{"class":179},[150,2829,2830,2832,2834,2836,2838],{"class":152,"line":809},[150,2831,316],{"class":179},[150,2833,1666],{"class":168},[150,2835,190],{"class":179},[150,2837,287],{"class":179},[150,2839,1673],{"class":179},[150,2841,2842,2844,2846,2848,2850,2852,2854,2856],{"class":152,"line":843},[150,2843,316],{"class":179},[150,2845,1680],{"class":168},[150,2847,190],{"class":179},[150,2849,287],{"class":179},[150,2851,180],{"class":179},[150,2853,1596],{"class":172},[150,2855,190],{"class":179},[150,2857,297],{"class":179},[150,2859,2860,2862,2864,2866,2868,2870,2872,2874],{"class":152,"line":880},[150,2861,316],{"class":179},[150,2863,1699],{"class":168},[150,2865,190],{"class":179},[150,2867,287],{"class":179},[150,2869,180],{"class":179},[150,2871,1596],{"class":172},[150,2873,190],{"class":179},[150,2875,297],{"class":179},[150,2877,2878,2880,2882,2884,2886],{"class":152,"line":886},[150,2879,316],{"class":179},[150,2881,1718],{"class":168},[150,2883,190],{"class":179},[150,2885,287],{"class":179},[150,2887,1725],{"class":179},[150,2889,2890,2892,2894,2896,2898,2900,2902,2904],{"class":152,"line":891},[150,2891,316],{"class":179},[150,2893,1732],{"class":168},[150,2895,190],{"class":179},[150,2897,287],{"class":179},[150,2899,180],{"class":179},[150,2901,1741],{"class":172},[150,2903,190],{"class":179},[150,2905,297],{"class":179},[150,2907,2908,2910,2912,2914,2916,2918,2921,2923],{"class":152,"line":913},[150,2909,316],{"class":179},[150,2911,1752],{"class":168},[150,2913,190],{"class":179},[150,2915,287],{"class":179},[150,2917,180],{"class":179},[150,2919,2920],{"class":172},"interactiveResponseMessage",[150,2922,190],{"class":179},[150,2924,297],{"class":179},[150,2926,2927,2929,2931,2933,2935,2937,2940,2942],{"class":152,"line":936},[150,2928,316],{"class":179},[150,2930,1244],{"class":168},[150,2932,190],{"class":179},[150,2934,287],{"class":179},[150,2936,180],{"class":179},[150,2938,2939],{"class":172},"track_order",[150,2941,190],{"class":179},[150,2943,297],{"class":179},[150,2945,2946,2948,2950,2952,2954],{"class":152,"line":966},[150,2947,316],{"class":179},[150,2949,1791],{"class":168},[150,2951,190],{"class":179},[150,2953,287],{"class":179},[150,2955,311],{"class":179},[150,2957,2958,2960,2962,2964,2966,2968,2971,2973],{"class":152,"line":988},[150,2959,2182],{"class":179},[150,2961,1752],{"class":858},[150,2963,190],{"class":179},[150,2965,287],{"class":179},[150,2967,180],{"class":179},[150,2969,2970],{"class":172},"quick_reply",[150,2972,190],{"class":179},[150,2974,297],{"class":179},[150,2976,2977,2979,2981,2983,2985,2987,2989,2991],{"class":152,"line":993},[150,2978,2182],{"class":179},[150,2980,1568],{"class":858},[150,2982,190],{"class":179},[150,2984,287],{"class":179},[150,2986,180],{"class":179},[150,2988,2939],{"class":172},[150,2990,190],{"class":179},[150,2992,297],{"class":179},[150,2994,2995,2997,3000,3002,3004],{"class":152,"line":1016},[150,2996,2182],{"class":179},[150,2998,2999],{"class":858},"label",[150,3001,190],{"class":179},[150,3003,287],{"class":179},[150,3005,2263],{"class":179},[150,3007,3008],{"class":152,"line":1039},[150,3009,2268],{"class":179},[150,3011,3012,3014,3016,3018,3020],{"class":152,"line":1050},[150,3013,316],{"class":179},[150,3015,1804],{"class":168},[150,3017,190],{"class":179},[150,3019,287],{"class":179},[150,3021,1673],{"class":179},[150,3023,3024,3026,3028,3030,3032,3034,3037],{"class":152,"line":1073},[150,3025,316],{"class":179},[150,3027,1817],{"class":168},[150,3029,190],{"class":179},[150,3031,287],{"class":179},[150,3033,180],{"class":179},[150,3035,3036],{"class":172},"2026-06-07T12:00:00.000Z",[150,3038,385],{"class":179},[150,3040,3041],{"class":152,"line":1095},[150,3042,883],{"class":179},[150,3044,3045],{"class":152,"line":1100},[150,3046,391],{"class":179},[404,3048,3049,3060],{},[407,3050,3051],{},[410,3052,3053,3056,3058],{},[413,3054,3055],{},"Interaction field",[413,3057,1398],{},[413,3059,418],{},[420,3061,3062,3081,3092],{},[410,3063,3064,3068,3070],{},[425,3065,3066],{},[80,3067,1752],{},[425,3069,1411],{},[425,3071,3072,3073,2462,3075,2468,3078,436],{},"WhatsApp interaction type, such as ",[80,3074,2970],{},[80,3076,3077],{},"list",[80,3079,3080],{},"single_select",[410,3082,3083,3087,3089],{},[425,3084,3085],{},[80,3086,1568],{},[425,3088,2320],{},[425,3090,3091],{},"Stable action or row ID supplied when the interactive message was sent. Use this to select application behavior.",[410,3093,3094,3098,3100],{},[425,3095,3096],{},[80,3097,2999],{},[425,3099,2320],{},[425,3101,3102],{},"Display label when WhatsApp includes it. Do not rely on it as a command ID.",[97,3104,3106],{"id":3105},"concurrent-events-and-reply-routing","Concurrent events and reply routing",[73,3108,3109],{},"Webhook deliveries can arrive close together or be processed concurrently. Keep the complete event together while processing it.",[73,3111,3112,3113,3115],{},"Use this pair from the same ",[80,3114,435],{}," event when replying:",[404,3117,3118,3128],{},[407,3119,3120],{},[410,3121,3122,3125],{},[413,3123,3124],{},"Send-message field",[413,3126,3127],{},"Webhook value",[420,3129,3130,3142],{},[410,3131,3132,3136],{},[425,3133,3134],{},[80,3135,503],{},[425,3137,3138,3139],{},"Top-level ",[80,3140,3141],{},"event.sessionId",[410,3143,3144,3148],{},[425,3145,3146],{},[80,3147,2351],{},[425,3149,3150],{},[80,3151,3152],{},"event.message.replyTo",[73,3154,3155,3156,2597,3158,436],{},"Do not store either value in a shared global variable or select the most recently received sender. Queue each event with its own ",[80,3157,503],{},[80,3159,1607],{},[1327,3161,3163],{"icon":3162},"i-lucide-route","Supplying both values from the same signed event ensures the reply uses the WhatsApp number that received the message and returns to the correct conversation.",[97,3165,3167],{"id":3166},"reply-example","Reply example",[141,3169,3172],{"className":548,"code":3170,"filename":3171,"language":551,"meta":146,"style":146},"async function replyToMessage(event) {\n  const response = await fetch(`${process.env.CHATKAZI_BASE_URL}\u002Fmessages\u002Ftext`, {\n    method: 'POST',\n    headers: {\n      'Content-Type': 'application\u002Fjson',\n      'x-api-key': process.env.CHATKAZI_API_KEY\n    },\n    body: JSON.stringify({\n      sessionId: event.sessionId,\n      to: event.message.replyTo,\n      text: 'Thanks, we received your message.'\n    })\n  })\n\n  if (!response.ok) {\n    throw new Error(`Reply failed with HTTP ${response.status}`)\n  }\n}\n","reply-to-webhook.js",[80,3173,3174,3193,3236,3251,3260,3280,3302,3306,3324,3339,3358,3372,3379,3385,3389,3409,3439,3443],{"__ignoreMap":146},[150,3175,3176,3179,3182,3185,3187,3189,3191],{"class":152,"line":153},[150,3177,3178],{"class":281},"async",[150,3180,3181],{"class":281}," function",[150,3183,3184],{"class":607}," replyToMessage",[150,3186,628],{"class":179},[150,3188,1195],{"class":678},[150,3190,670],{"class":179},[150,3192,311],{"class":179},[150,3194,3195,3197,3200,3202,3205,3208,3210,3212,3215,3217,3219,3221,3224,3226,3229,3232,3234],{"class":152,"line":196},[150,3196,696],{"class":281},[150,3198,3199],{"class":183}," response",[150,3201,702],{"class":179},[150,3203,3204],{"class":558}," await",[150,3206,3207],{"class":607}," fetch",[150,3209,628],{"class":654},[150,3211,946],{"class":179},[150,3213,3214],{"class":183},"process",[150,3216,436],{"class":179},[150,3218,710],{"class":183},[150,3220,436],{"class":179},[150,3222,3223],{"class":183},"CHATKAZI_BASE_URL",[150,3225,951],{"class":179},[150,3227,3228],{"class":172},"\u002Fmessages\u002Ftext",[150,3230,3231],{"class":179},"`",[150,3233,639],{"class":179},[150,3235,311],{"class":179},[150,3237,3238,3241,3243,3245,3247,3249],{"class":152,"line":214},[150,3239,3240],{"class":654},"    method",[150,3242,287],{"class":179},[150,3244,234],{"class":179},[150,3246,82],{"class":172},[150,3248,631],{"class":179},[150,3250,297],{"class":179},[150,3252,3253,3256,3258],{"class":152,"line":228},[150,3254,3255],{"class":654},"    headers",[150,3257,287],{"class":179},[150,3259,311],{"class":179},[150,3261,3262,3265,3268,3270,3272,3274,3276,3278],{"class":152,"line":240},[150,3263,3264],{"class":179},"      '",[150,3266,3267],{"class":654},"Content-Type",[150,3269,631],{"class":179},[150,3271,287],{"class":179},[150,3273,234],{"class":179},[150,3275,662],{"class":172},[150,3277,631],{"class":179},[150,3279,297],{"class":179},[150,3281,3282,3284,3287,3289,3291,3293,3295,3297,3299],{"class":152,"line":246},[150,3283,3264],{"class":179},[150,3285,3286],{"class":654},"x-api-key",[150,3288,631],{"class":179},[150,3290,287],{"class":179},[150,3292,705],{"class":183},[150,3294,436],{"class":179},[150,3296,710],{"class":183},[150,3298,436],{"class":179},[150,3300,3301],{"class":183},"CHATKAZI_API_KEY\n",[150,3303,3304],{"class":152,"line":252},[150,3305,2268],{"class":179},[150,3307,3308,3311,3313,3315,3317,3320,3322],{"class":152,"line":368},[150,3309,3310],{"class":654},"    body",[150,3312,287],{"class":179},[150,3314,1169],{"class":183},[150,3316,436],{"class":179},[150,3318,3319],{"class":607},"stringify",[150,3321,628],{"class":654},[150,3323,237],{"class":179},[150,3325,3326,3329,3331,3333,3335,3337],{"class":152,"line":388},[150,3327,3328],{"class":654},"      sessionId",[150,3330,287],{"class":179},[150,3332,1164],{"class":183},[150,3334,436],{"class":179},[150,3336,503],{"class":183},[150,3338,297],{"class":179},[150,3340,3341,3344,3346,3348,3350,3352,3354,3356],{"class":152,"line":771},[150,3342,3343],{"class":654},"      to",[150,3345,287],{"class":179},[150,3347,1164],{"class":183},[150,3349,436],{"class":179},[150,3351,282],{"class":183},[150,3353,436],{"class":179},[150,3355,1607],{"class":183},[150,3357,297],{"class":179},[150,3359,3360,3363,3365,3367,3370],{"class":152,"line":804},[150,3361,3362],{"class":654},"      text",[150,3364,287],{"class":179},[150,3366,234],{"class":179},[150,3368,3369],{"class":172},"Thanks, we received your message.",[150,3371,258],{"class":179},[150,3373,3374,3377],{"class":152,"line":809},[150,3375,3376],{"class":179},"    }",[150,3378,743],{"class":654},[150,3380,3381,3383],{"class":152,"line":843},[150,3382,255],{"class":179},[150,3384,743],{"class":654},[150,3386,3387],{"class":152,"line":880},[150,3388,594],{"emptyLinePlaceholder":593},[150,3390,3391,3393,3395,3397,3400,3402,3405,3407],{"class":152,"line":886},[150,3392,812],{"class":558},[150,3394,675],{"class":654},[150,3396,817],{"class":179},[150,3398,3399],{"class":183},"response",[150,3401,436],{"class":179},[150,3403,3404],{"class":183},"ok",[150,3406,838],{"class":654},[150,3408,237],{"class":179},[150,3410,3411,3414,3417,3420,3422,3424,3427,3429,3431,3433,3435,3437],{"class":152,"line":891},[150,3412,3413],{"class":558},"    throw",[150,3415,3416],{"class":179}," new",[150,3418,3419],{"class":607}," Error",[150,3421,628],{"class":654},[150,3423,3231],{"class":179},[150,3425,3426],{"class":172},"Reply failed with HTTP ",[150,3428,907],{"class":179},[150,3430,3399],{"class":183},[150,3432,436],{"class":179},[150,3434,853],{"class":183},[150,3436,961],{"class":179},[150,3438,743],{"class":654},[150,3440,3441],{"class":152,"line":913},[150,3442,883],{"class":179},[150,3444,3445],{"class":152,"line":936},[150,3446,391],{"class":179},[73,3448,3449,3450,3452],{},"Never hardcode ",[80,3451,503],{}," when replying to webhook events unless your account only has one session and it is guaranteed to remain that way.",[97,3454,3456],{"id":3455},"media-fields","Media fields",[73,3458,3459,3460,3462],{},"The ",[80,3461,1804],{}," object is present for image, video, audio, document, and sticker messages.",[404,3464,3465,3475],{},[407,3466,3467],{},[410,3468,3469,3471,3473],{},[413,3470,1395],{},[413,3472,1398],{},[413,3474,418],{},[420,3476,3477,3502,3513,3524,3535],{},[410,3478,3479,3483,3485],{},[425,3480,3481],{},[80,3482,1752],{},[425,3484,1411],{},[425,3486,3487,3488,2462,3490,2462,3493,2462,3496,2468,3499,436],{},"Simplified media type: ",[80,3489,2193],{},[80,3491,3492],{},"video",[80,3494,3495],{},"audio",[80,3497,3498],{},"document",[80,3500,3501],{},"sticker",[410,3503,3504,3508,3510],{},[425,3505,3506],{},[80,3507,2204],{},[425,3509,2320],{},[425,3511,3512],{},"Media MIME type reported by WhatsApp.",[410,3514,3515,3519,3521],{},[425,3516,3517],{},[80,3518,2224],{},[425,3520,2320],{},[425,3522,3523],{},"File name reported for the media, commonly used for documents.",[410,3525,3526,3530,3532],{},[425,3527,3528],{},[80,3529,2237],{},[425,3531,2320],{},[425,3533,3534],{},"Caption attached to an image, video, or document.",[410,3536,3537,3541,3544],{},[425,3538,3539],{},[80,3540,2256],{},[425,3542,3543],{},"number or null",[425,3545,3546],{},"Duration reported for audio or video media.",[89,3548,3550],{"id":3549},"webhooktest",[80,3551,1370],{},[73,3553,3554],{},"Sent when you request a test event. Use it to confirm that your destination is reachable and signature verification is configured correctly.",[141,3556,3558],{"className":264,"code":3557,"filename":1370,"language":267,"meta":146,"style":146},"{\n  \"event\": \"webhook.test\",\n  \"timestamp\": \"2026-06-05T12:10:00.000Z\",\n  \"customerId\": \"customer_id\",\n  \"sessionId\": \"default\",\n  \"data\": {\n    \"message\": \"This is a test event from ChatKazi.\"\n  }\n}\n",[80,3559,3560,3564,3582,3601,3619,3637,3649,3666,3670],{"__ignoreMap":146},[150,3561,3562],{"class":152,"line":153},[150,3563,237],{"class":179},[150,3565,3566,3568,3570,3572,3574,3576,3578,3580],{"class":152,"line":196},[150,3567,278],{"class":179},[150,3569,1195],{"class":281},[150,3571,190],{"class":179},[150,3573,287],{"class":179},[150,3575,180],{"class":179},[150,3577,1370],{"class":172},[150,3579,190],{"class":179},[150,3581,297],{"class":179},[150,3583,3584,3586,3588,3590,3592,3594,3597,3599],{"class":152,"line":214},[150,3585,278],{"class":179},[150,3587,828],{"class":281},[150,3589,190],{"class":179},[150,3591,287],{"class":179},[150,3593,180],{"class":179},[150,3595,3596],{"class":172},"2026-06-05T12:10:00.000Z",[150,3598,190],{"class":179},[150,3600,297],{"class":179},[150,3602,3603,3605,3607,3609,3611,3613,3615,3617],{"class":152,"line":228},[150,3604,278],{"class":179},[150,3606,1432],{"class":281},[150,3608,190],{"class":179},[150,3610,287],{"class":179},[150,3612,180],{"class":179},[150,3614,1527],{"class":172},[150,3616,190],{"class":179},[150,3618,297],{"class":179},[150,3620,3621,3623,3625,3627,3629,3631,3633,3635],{"class":152,"line":240},[150,3622,278],{"class":179},[150,3624,503],{"class":281},[150,3626,190],{"class":179},[150,3628,287],{"class":179},[150,3630,180],{"class":179},[150,3632,1451],{"class":172},[150,3634,190],{"class":179},[150,3636,297],{"class":179},[150,3638,3639,3641,3643,3645,3647],{"class":152,"line":246},[150,3640,278],{"class":179},[150,3642,304],{"class":281},[150,3644,190],{"class":179},[150,3646,287],{"class":179},[150,3648,311],{"class":179},[150,3650,3651,3653,3655,3657,3659,3661,3664],{"class":152,"line":252},[150,3652,316],{"class":179},[150,3654,282],{"class":168},[150,3656,190],{"class":179},[150,3658,287],{"class":179},[150,3660,180],{"class":179},[150,3662,3663],{"class":172},"This is a test event from ChatKazi.",[150,3665,385],{"class":179},[150,3667,3668],{"class":152,"line":368},[150,3669,883],{"class":179},[150,3671,3672],{"class":152,"line":388},[150,3673,391],{"class":179},[97,3675,3677],{"id":3676},"test-event-fields","Test event fields",[404,3679,3680,3690],{},[407,3681,3682],{},[410,3683,3684,3686,3688],{},[413,3685,1395],{},[413,3687,1398],{},[413,3689,418],{},[420,3691,3692],{},[410,3693,3694,3699,3701],{},[425,3695,3696],{},[80,3697,3698],{},"data.message",[425,3700,1411],{},[425,3702,3703],{},"Human-readable text identifying the payload as a ChatKazi test event.",[97,3705,3707],{"id":3706},"send-a-test-event","Send a test event",[141,3709,3711],{"className":143,"code":3710,"language":145,"meta":146,"style":146},"POST \u002Fwebhook\u002Ftest\n",[80,3712,3713],{"__ignoreMap":146},[150,3714,3715],{"class":152,"line":153},[150,3716,3710],{},[141,3718,3720],{"className":158,"code":3719,"filename":160,"language":161,"meta":146,"style":146},"curl -X POST \"$CHATKAZI_BASE_URL\u002Fwebhook\u002Ftest\" \\\n  -H \"x-api-key: $CHATKAZI_API_KEY\"\n",[80,3721,3722,3742],{"__ignoreMap":146},[150,3723,3724,3726,3728,3731,3733,3735,3738,3740],{"class":152,"line":153},[150,3725,169],{"class":168},[150,3727,173],{"class":172},[150,3729,3730],{"class":172}," POST",[150,3732,180],{"class":179},[150,3734,184],{"class":183},[150,3736,3737],{"class":172},"\u002Fwebhook\u002Ftest",[150,3739,190],{"class":179},[150,3741,193],{"class":183},[150,3743,3744,3746,3748,3750,3752],{"class":152,"line":196},[150,3745,199],{"class":172},[150,3747,180],{"class":179},[150,3749,204],{"class":172},[150,3751,207],{"class":183},[150,3753,385],{"class":179},[73,3755,3756,3757,3759],{},"The test sends a signed ",[80,3758,1370],{}," event to your enabled webhook URL.",[89,3761,3763],{"id":3762},"rotate-the-signing-secret","Rotate the signing secret",[73,3765,3766],{},"Rotate the secret if it has been exposed or as part of your regular security process:",[141,3768,3770],{"className":158,"code":3769,"filename":160,"language":161,"meta":146,"style":146},"curl -X PATCH \"$CHATKAZI_BASE_URL\u002Fwebhook\" \\\n  -H \"x-api-key: $CHATKAZI_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"url\": \"https:\u002F\u002Fyour-app.com\u002Fwebhooks\u002Fchatkazi\",\n    \"enabled\": true,\n    \"rotateSecret\": true\n  }'\n",[80,3771,3772,3790,3804,3816,3824,3828,3833,3838],{"__ignoreMap":146},[150,3773,3774,3776,3778,3780,3782,3784,3786,3788],{"class":152,"line":153},[150,3775,169],{"class":168},[150,3777,173],{"class":172},[150,3779,176],{"class":172},[150,3781,180],{"class":179},[150,3783,184],{"class":183},[150,3785,187],{"class":172},[150,3787,190],{"class":179},[150,3789,193],{"class":183},[150,3791,3792,3794,3796,3798,3800,3802],{"class":152,"line":196},[150,3793,199],{"class":172},[150,3795,180],{"class":179},[150,3797,204],{"class":172},[150,3799,207],{"class":183},[150,3801,190],{"class":179},[150,3803,193],{"class":183},[150,3805,3806,3808,3810,3812,3814],{"class":152,"line":214},[150,3807,199],{"class":172},[150,3809,180],{"class":179},[150,3811,221],{"class":172},[150,3813,190],{"class":179},[150,3815,193],{"class":183},[150,3817,3818,3820,3822],{"class":152,"line":228},[150,3819,231],{"class":172},[150,3821,234],{"class":179},[150,3823,237],{"class":172},[150,3825,3826],{"class":152,"line":240},[150,3827,243],{"class":172},[150,3829,3830],{"class":152,"line":246},[150,3831,3832],{"class":172},"    \"enabled\": true,\n",[150,3834,3835],{"class":152,"line":252},[150,3836,3837],{"class":172},"    \"rotateSecret\": true\n",[150,3839,3840,3842],{"class":152,"line":368},[150,3841,255],{"class":172},[150,3843,258],{"class":179},[73,3845,3846],{},"The response returns the new secret once. Update your webhook endpoint before sending another test event.",[89,3848,3850],{"id":3849},"delivery-behavior","Delivery behavior",[492,3852,3853,3859,3862,3865,3871],{},[495,3854,3855,3856,3858],{},"ChatKazi considers any ",[80,3857,86],{}," response successful.",[495,3860,3861],{},"Requests time out after 10 seconds.",[495,3863,3864],{},"Failed deliveries are recorded for inspection but are not automatically retried.",[495,3866,3867,3870],{},[80,3868,3869],{},"GET \u002Fwebhook"," returns your configuration and the 20 most recent deliveries.",[495,3872,3873,3876],{},[80,3874,3875],{},"DELETE \u002Fwebhook"," removes the configured destination.",[3878,3879,3880],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":146,"searchDepth":196,"depth":196,"links":3882},[3883,3889,3890,3893,3894,3895,3896,3906,3910,3911],{"id":91,"depth":196,"text":92,"children":3884},[3885,3886,3887,3888],{"id":99,"depth":214,"text":100},{"id":106,"depth":214,"text":107},{"id":117,"depth":214,"text":118},{"id":128,"depth":214,"text":129},{"id":138,"depth":196,"text":139},{"id":398,"depth":196,"text":399,"children":3891},[3892],{"id":486,"depth":214,"text":487},{"id":513,"depth":196,"text":514},{"id":1336,"depth":196,"text":1337},{"id":1382,"depth":196,"text":1383},{"id":1454,"depth":196,"text":435,"children":3897},[3898,3899,3900,3901,3902,3903,3904,3905],{"id":1465,"depth":214,"text":1466},{"id":1839,"depth":214,"text":1840},{"id":2296,"depth":214,"text":2297},{"id":2523,"depth":214,"text":2524},{"id":2631,"depth":214,"text":2632},{"id":3105,"depth":214,"text":3106},{"id":3166,"depth":214,"text":3167},{"id":3455,"depth":214,"text":3456},{"id":3549,"depth":196,"text":1370,"children":3907},[3908,3909],{"id":3676,"depth":214,"text":3677},{"id":3706,"depth":214,"text":3707},{"id":3762,"depth":196,"text":3763},{"id":3849,"depth":196,"text":3850},"Receive inbound WhatsApp messages and verify webhook signatures.","md",null,{},{"icon":61},{"title":3918,"description":3919},"ChatKazi webhooks","Configure ChatKazi webhooks and verify requests with your signing secret.","5G857hSRkIfPF35DOmTsJGb53qP8J031ZOlvCyj9NgA",[3922,3924],{"title":53,"path":54,"stem":55,"description":3923,"icon":56,"children":-1},"Send WhatsApp text, interactive, and media messages.",{"title":63,"path":64,"stem":65,"description":3925,"icon":66,"children":-1},"Handle usage limits and failed requests.",1784048141178]