[{"data":1,"prerenderedAt":543},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fmonitors-http":3},{"id":4,"title":5,"body":6,"description":536,"extension":537,"meta":538,"navigation":185,"path":539,"seo":540,"stem":541,"__hash__":542},"docs\u002Fdocs\u002F4.monitors-http.md","HTTP(s) monitors",{"type":7,"value":8,"toc":512},"minimark",[9,13,17,23,28,90,94,97,107,121,125,142,146,172,176,179,187,190,195,209,213,216,220,223,249,252,256,259,279,286,290,298,317,320,324,330,334,337,363,367,370,399,403,406,410,413,427,431,434,445,448,452,463,477,481,505,509],[10,11,5],"h1",{"id":12},"https-monitors",[14,15,16],"p",{},"HTTP(s) monitors send an HTTP GET request to a URL and check the response.",[18,19],"img",{"src":20,"alt":21,"style":22},"\u002Fdocs\u002Fmonitor-detail.png","HTTP monitor detail showing uptime stats and multi-region response time chart","border-radius:12px;width:100%;margin:1rem 0;",[24,25,27],"h2",{"id":26},"how-it-works","How it works",[29,30,31,35,42,50],"ol",{},[32,33,34],"li",{},"Vantaj opens a connection to the host",[32,36,37,38],{},"Sends ",[39,40,41],"code",{},"GET \u003Curl> HTTP\u002F1.1",[32,43,44,45,49],{},"Waits up to ",[46,47,48],"strong",{},"10 seconds"," for a response",[32,51,52,53],{},"Records the result:\n",[54,55,56,70,76],"ul",{},[32,57,58,61,62,65,66,69],{},[46,59,60],{},"Up"," — any ",[39,63,64],{},"2xx"," or ",[39,67,68],{},"3xx"," status code within 10s",[32,71,72,75],{},[46,73,74],{},"Degraded"," — response received but unusually slow",[32,77,78,81,82,85,86,89],{},[46,79,80],{},"Down"," — connection refused, timeout, DNS failure, or ",[39,83,84],{},"4xx","\u002F",[39,87,88],{},"5xx"," status",[24,91,93],{"id":92},"url-format","URL format",[14,95,96],{},"Enter the full URL including scheme:",[98,99,104],"pre",{"className":100,"code":102,"language":103},[101],"language-text","https:\u002F\u002Fapi.example.com\u002Fhealth\nhttps:\u002F\u002Fexample.com\nhttp:\u002F\u002Finternal-service:8080\u002Fping\n","text",[39,105,102],{"__ignoreMap":106},"",[14,108,109,110,113,114,117,118,120],{},"Both ",[39,111,112],{},"http:\u002F\u002F"," and ",[39,115,116],{},"https:\u002F\u002F"," are supported. For HTTPS endpoints, the TLS certificate is validated — an expired or invalid certificate will cause a ",[46,119,80],{}," result.",[24,122,124],{"id":123},"redirects","Redirects",[14,126,127,128,131,132,131,135,131,138,141],{},"HTTP redirects (",[39,129,130],{},"301",", ",[39,133,134],{},"302",[39,136,137],{},"307",[39,139,140],{},"308",") are followed automatically up to 5 hops. The final destination's status code determines the check result.",[24,143,145],{"id":144},"tips","Tips",[54,147,148,162,169],{},[32,149,150,151,65,154,157,158,161],{},"Use a dedicated ",[39,152,153],{},"\u002Fhealth",[39,155,156],{},"\u002Fping"," endpoint that returns ",[39,159,160],{},"200"," quickly without hitting your database",[32,163,164,165,168],{},"Avoid checking URLs that require authentication headers — the checker sends no ",[39,166,167],{},"Authorization"," header",[32,170,171],{},"For APIs behind a CDN, the check hits the CDN edge, not your origin directly",[24,173,175],{"id":174},"adding-a-new-monitor","Adding a New Monitor",[14,177,178],{},"Here's a walkthrough of creating an HTTP monitor in Vantaj:",[14,180,181],{},[182,183],"video",{"src":184,"autoPlay":185,"muted":185,"loop":185,"playsInline":185,"style":186},"\u002Fdocs\u002FNew_monitor.mp4",true,"border-radius:12px;width:100%;margin:1rem 0;border:1px solid rgba(255,255,255,0.07);",[14,188,189],{},"When you create a new monitor, you'll configure the following settings:",[191,192,194],"h3",{"id":193},"url","URL",[14,196,197,198,65,200,202,203,65,205,208],{},"The full endpoint URL including scheme (",[39,199,116],{},[39,201,112],{},"). This is the address Vantaj will check on every interval. Use a health check endpoint like ",[39,204,153],{},[39,206,207],{},"\u002Fstatus"," when possible — these are designed to return quickly and verify core dependencies.",[191,210,212],{"id":211},"friendly-name","Friendly Name",[14,214,215],{},"A human-readable label that appears in your dashboard, alerts, and status pages. Use something descriptive like \"Production API\" or \"Marketing Site\" rather than the raw URL.",[191,217,219],{"id":218},"check-interval","Check Interval",[14,221,222],{},"How often Vantaj checks your endpoint. Available intervals depend on your plan:",[54,224,225,231,237,243],{},[32,226,227,230],{},[46,228,229],{},"30 seconds"," — For business-critical services where every second of detection speed matters",[32,232,233,236],{},[46,234,235],{},"1 minute"," — The sweet spot for most production services",[32,238,239,242],{},[46,240,241],{},"2 minutes"," — Good for secondary services and staging environments",[32,244,245,248],{},[46,246,247],{},"5 minutes"," — Suitable for low-priority or internal tools",[14,250,251],{},"Shorter intervals mean faster detection but consume more of your monitor quota.",[191,253,255],{"id":254},"check-regions","Check Regions",[14,257,258],{},"Vantaj checks from multiple global regions simultaneously. You can choose which regions are active for each monitor:",[54,260,261,267,273],{},[32,262,263,266],{},[46,264,265],{},"US East"," (Virginia)",[32,268,269,272],{},[46,270,271],{},"EU West"," (Frankfurt)",[32,274,275,278],{},[46,276,277],{},"AP Southeast"," (Singapore)",[14,280,281,282,285],{},"When a check fails from one region, Vantaj re-verifies from the other configured regions before opening an incident. This ",[46,283,284],{},"multi-region consensus"," approach eliminates false positives caused by regional network issues. We recommend keeping at least two regions enabled for accurate results.",[191,287,289],{"id":288},"expected-status-code","Expected Status Code",[14,291,292,293,65,295,297],{},"By default, Vantaj treats any ",[39,294,64],{},[39,296,68],{}," response as \"up.\" You can override this to expect a specific status code:",[54,299,300,305,311],{},[32,301,302,304],{},[46,303,160],{}," — The most common expectation for health endpoints",[32,306,307,310],{},[46,308,309],{},"301\u002F302"," — If you're specifically monitoring a redirect",[32,312,313,316],{},[46,314,315],{},"401\u002F403"," — If you're verifying that authentication or access control is enforced",[14,318,319],{},"This is useful when you want to confirm that a protected endpoint is returning the correct access-denied response rather than being accidentally open.",[191,321,323],{"id":322},"request-timeout","Request Timeout",[14,325,326,327,329],{},"The maximum time Vantaj waits for a response before marking the check as failed. The default is ",[46,328,48],{},", which works for most endpoints. You can lower it for fast APIs (3–5s) or raise it for endpoints that do heavier processing.",[191,331,333],{"id":332},"request-method","Request Method",[14,335,336],{},"Choose the HTTP method for the check:",[54,338,339,345,351,357],{},[32,340,341,344],{},[46,342,343],{},"GET"," — The default, suitable for most health checks and pages",[32,346,347,350],{},[46,348,349],{},"POST"," — For endpoints that only respond to POST requests",[32,352,353,356],{},[46,354,355],{},"HEAD"," — Lighter than GET since the server doesn't return a body",[32,358,359,362],{},[46,360,361],{},"PUT \u002F PATCH \u002F DELETE"," — Available for specialized API monitoring",[191,364,366],{"id":365},"request-headers","Request Headers",[14,368,369],{},"Add custom headers to the check request. Common use cases:",[54,371,372,377,383,389],{},[32,373,374,376],{},[46,375,167],{}," — Send a Bearer token or API key to monitor authenticated endpoints",[32,378,379,382],{},[46,380,381],{},"Content-Type"," — Required for POST requests with a body",[32,384,385,388],{},[46,386,387],{},"Accept"," — Specify the expected response format",[32,390,391,394,395,398],{},[46,392,393],{},"Custom headers"," — Any header your application expects (e.g., ",[39,396,397],{},"X-API-Key",")",[191,400,402],{"id":401},"request-body","Request Body",[14,404,405],{},"For POST, PUT, and PATCH requests, you can include a request body. This is useful for monitoring endpoints that expect specific payloads, such as API health checks that accept JSON input.",[191,407,409],{"id":408},"keyword-validation","Keyword Validation",[14,411,412],{},"Check that the response body contains (or doesn't contain) a specific string. This catches cases where the server returns 200 but the content is wrong — for example, a load balancer serving an error page or a CDN returning stale content.",[54,414,415,421],{},[32,416,417,420],{},[46,418,419],{},"Should contain"," — Alert if the keyword is missing from the response",[32,422,423,426],{},[46,424,425],{},"Should not contain"," — Alert if the keyword is found in the response",[191,428,430],{"id":429},"alert-policy","Alert Policy",[14,432,433],{},"Assign the monitor to an alert policy that controls who gets notified and how. Alert policies define:",[54,435,436,439,442],{},[32,437,438],{},"Which notification channels receive alerts (email, Slack, Discord, webhooks)",[32,440,441],{},"Escalation rules for unacknowledged incidents",[32,443,444],{},"Grouping and severity settings",[14,446,447],{},"If you don't select a policy, the monitor uses your default alert configuration.",[191,449,451],{"id":450},"project-and-groups","Project and Groups",[14,453,454,455,458,459,462],{},"Organize the monitor into a ",[46,456,457],{},"project"," and optionally a ",[46,460,461],{},"group"," within that project. This keeps your dashboard clean as you scale:",[54,464,465,471],{},[32,466,467,470],{},[46,468,469],{},"Projects"," — Top-level organizational units (e.g., per client, per product, per environment)",[32,472,473,476],{},[46,474,475],{},"Groups"," — Sub-categories within a project (e.g., \"API,\" \"Frontend,\" \"Infrastructure\")",[191,478,480],{"id":479},"tags","Tags",[14,482,483,484,131,487,490,491,131,494,497,498,131,501,504],{},"Add tags for filtering and organization. Tags are freeform labels you can use however you like — by environment (",[39,485,486],{},"production",[39,488,489],{},"staging","), by team (",[39,492,493],{},"backend",[39,495,496],{},"platform","), or by priority (",[39,499,500],{},"critical",[39,502,503],{},"low",").",[191,506,508],{"id":507},"status-page","Status Page",[14,510,511],{},"Optionally connect the monitor to one or more status pages. When this monitor goes down, the status page updates automatically to reflect the incident.",{"title":106,"searchDepth":513,"depth":513,"links":514},2,[515,516,517,518,519],{"id":26,"depth":513,"text":27},{"id":92,"depth":513,"text":93},{"id":123,"depth":513,"text":124},{"id":144,"depth":513,"text":145},{"id":174,"depth":513,"text":175,"children":520},[521,523,524,525,526,527,528,529,530,531,532,533,534,535],{"id":193,"depth":522,"text":194},3,{"id":211,"depth":522,"text":212},{"id":218,"depth":522,"text":219},{"id":254,"depth":522,"text":255},{"id":288,"depth":522,"text":289},{"id":322,"depth":522,"text":323},{"id":332,"depth":522,"text":333},{"id":365,"depth":522,"text":366},{"id":401,"depth":522,"text":402},{"id":408,"depth":522,"text":409},{"id":429,"depth":522,"text":430},{"id":450,"depth":522,"text":451},{"id":479,"depth":522,"text":480},{"id":507,"depth":522,"text":508},"How HTTP(s) monitors work, URL formats, redirects, and tips","md",{},"\u002Fdocs\u002Fmonitors-http",{"title":5,"description":536},"docs\u002F4.monitors-http","vAzzc2hyPPh-EQ-jIrrMeO4aHkxDQzAGR0lUkGnBn3E",1780583796958]