[{"data":1,"prerenderedAt":121},["ShallowReactive",2],{"pseo:errors:engine-timeout":3,"highlight:error:engine-timeout":115},{"cause":4,"code":5,"example":6,"faqs":10,"feature":17,"fix_steps":21,"http_status":25,"message":8,"protocol_aliases":26,"raised_by":27,"related":57,"retryable":94,"seo":95,"slug":112,"tier":113,"title":114,"updated":110,"url":106},"The WhatsApp engine accepted the request but did not answer within the budget Wapito gives it, which happens when a large media file is still being processed, when WhatsApp's servers are slow to acknowledge a send, or when the session is reconnecting. The outcome is genuinely unknown: the action may have completed after the deadline. That is the important difference from a 503, where nothing happened at all, and it is why a send should be checked before it is repeated.","engine_timeout",{"error":7},{"code":5,"message":8,"request_id":9},"The WhatsApp engine did not respond in time.","req_01JRQ8F4X9N2K7YB3C5V6W8H0T",[11,14],{"a":12,"q":13},"A few seconds for ordinary calls and longer for media, tuned so that a normal WhatsApp round trip fits comfortably and a stuck one is reported rather than held open. The exact budget is not part of the contract, so build the retry logic on the status code and the message state rather than on a timer.","How long does Wapito wait before returning a 504?",{"a":15,"q":16},"Because the deadline passed on our side after WhatsApp had already accepted the message. The engine does not cancel work when the caller stops waiting, so the send completed and the delivery receipt followed. That is exactly why the fix steps say to check the message status before sending it again.","Why did the message arrive even though I got a 504?",{"name":18,"slug":19,"url":20},"Connect a Number","connect-number-qr-pairing","\u002Fwhatsapp-api\u002Fconnect-number-qr-pairing\u002F",[22,23,24],"For a send, look the message up or wait for the messages.status webhook before retrying, so a slow success is not turned into a duplicate.","For a read or an idempotent change, retry with backoff; the second call returns the current state whatever the first one did.","Keep uploads well under the size limits and prefer a stored media id over a remote URL, so the engine is not waiting on a download inside the request.",504,[],[28,37,45,50],{"availability":29,"ban_risk":30,"method":31,"operationId":32,"path":33,"summary":34,"tag":35,"url":36},"ga","low","GET","getChannelHealth","\u002Fchannel\u002Fhealth","Check channel and engine health","channel","\u002Fdocs\u002Fapi\u002Fchannel\u002Fget-channel-health\u002F",{"availability":29,"ban_risk":38,"method":39,"operationId":40,"path":41,"summary":42,"tag":43,"url":44},"medium","POST","sendText","\u002Fmessages\u002Ftext","Send a text message","messages","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-text\u002F",{"availability":29,"ban_risk":38,"method":39,"operationId":46,"path":47,"summary":48,"tag":43,"url":49},"sendImage","\u002Fmessages\u002Fimage","Send an image","\u002Fdocs\u002Fapi\u002Fmessages\u002Fsend-image\u002F",{"availability":29,"ban_risk":51,"method":39,"operationId":52,"path":53,"summary":54,"tag":55,"url":56},"high","createGroup","\u002Fgroups","Create a group","groups","\u002Fdocs\u002Fapi\u002Fgroups\u002Fcreate-group\u002F",{"glossary":58,"hub":68,"operations":69,"pillar":20,"siblings":78},[59,62,65],{"title":60,"url":61},"Pairing code","\u002Fglossary\u002Fpairing-code\u002F",{"title":63,"url":64},"QR linking","\u002Fglossary\u002Fqr-linking\u002F",{"title":66,"url":67},"Session","\u002Fglossary\u002Fsession\u002F","\u002Fdocs\u002Ferrors\u002F",[70,72,74,76],{"title":71,"url":36},"GET \u002Fchannel\u002Fhealth",{"title":73,"url":44},"POST \u002Fmessages\u002Ftext",{"title":75,"url":49},"POST \u002Fmessages\u002Fimage",{"title":77,"url":56},"POST \u002Fgroups",[79,82,85,88,91],{"title":80,"url":81},"engine_unavailable (503)","\u002Fdocs\u002Ferrors\u002Fengine-unavailable\u002F",{"title":83,"url":84},"engine_error (502)","\u002Fdocs\u002Ferrors\u002Fengine-error\u002F",{"title":86,"url":87},"engine_unsupported_feature (501)","\u002Fdocs\u002Ferrors\u002Fengine-unsupported-feature\u002F",{"title":89,"url":90},"feature_not_available (501)","\u002Fdocs\u002Ferrors\u002Ffeature-not-available\u002F",{"title":92,"url":93},"internal_error (500)","\u002Fdocs\u002Ferrors\u002Finternal-error\u002F",true,{"breadcrumb":96,"canonical":107,"description":108,"h1":109,"lastmod":110,"title":111},[97,100,103,105],{"name":98,"url":99},"Home","\u002F",{"name":101,"url":102},"Docs","\u002Fdocs\u002F",{"name":104,"url":68},"Errors",{"name":5,"url":106},"\u002Fdocs\u002Ferrors\u002Fengine-timeout\u002F","https:\u002F\u002Fwapito.com\u002Fdocs\u002Ferrors\u002Fengine-timeout\u002F","504 engine_timeout: The WhatsApp engine did not respond in time. The outcome is genuinely unknown: the action may have completed after the deadline.","engine_timeout — Engine did not answer in time","2026-09-17","engine_timeout (504): Engine did not answer in time | Wapito","engine-timeout","t8","Engine did not answer in time",[116],{"label":117,"id":118,"lang":118,"code":119,"html":120},"JSON","json","{\n  \"error\": {\n    \"code\": \"engine_timeout\",\n    \"message\": \"The WhatsApp engine did not respond in time.\",\n    \"request_id\": \"req_01JRQ8F4X9N2K7YB3C5V6W8H0T\"\n  }\n}","\u003Cpre class=\"shiki shiki-themes github-light-default github-dark-default\" style=\"background-color:#ffffff;--shiki-dark-bg:#0d1117;color:#1f2328;--shiki-dark:#e6edf3\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">{\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">  \"error\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: {\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">    \"code\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"engine_timeout\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">    \"message\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"The WhatsApp engine did not respond in time.\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">,\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#116329;--shiki-dark:#7EE787\">    \"request_id\"\u003C\u002Fspan>\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">: \u003C\u002Fspan>\u003Cspan style=\"color:#0A3069;--shiki-dark:#A5D6FF\">\"req_01JRQ8F4X9N2K7YB3C5V6W8H0T\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">  }\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#1F2328;--shiki-dark:#E6EDF3\">}\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",1790464916057]