{"article":{"id":360001020389,"url":"https://uptimesupport.zendesk.com/api/v2/help_center/en-us/articles/360001020389.json","html_url":"https://support.uptime.com/hc/en-us/articles/360001020389-HTTP-S-Check-Basics","author_id":8728880477340,"comments_disabled":true,"draft":false,"promoted":false,"position":2,"vote_sum":2,"vote_count":6,"upvote_count":4,"downvote_count":2,"section_id":11871597866396,"created_at":"2018-05-31T10:11:46Z","updated_at":"2026-05-13T17:38:30Z","name":"HTTP(S) Check Basics","title":"HTTP(S) Check Basics","source_locale":"en-us","locale":"en-us","outdated":false,"outdated_locales":[],"edited_at":"2026-05-13T17:38:30Z","user_segment_id":null,"permission_group_id":230089,"content_tag_ids":["01HJPW1Z8BMFBFRQR8D191M78Z"],"label_names":["basic","check","HTTP(S)","HTTP"],"body":"<p>This article will cover the setup and purpose of the HTTP(S) functionality built into Uptime.com. This basic check is the most common check utilized by Uptime users, and most likely the first check you will set up after logging in. The following tutorial will assume you’re logged into Uptime.com.</p><p><a id=\"return\"></a><strong>Table of</strong> <strong>Contents</strong></p><ul>\n<li style=\"font-weight: 400;\" data-list-item-id=\"e8d514a31429d4268267157f3473f4d66\"><a href=\"#https_check_setup\" target=\"_self\">Adding Your First HTTP(S) Check</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"ede7b5d4654153635db28f991a9fe9a24\"><a href=\"#basic_setup\" target=\"_self\">Basic Setup</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"e6a069ec921c28d84a117b0a45d4efe8e\"><a href=\"#monitor_API_endpoint\" target=\"_self\">Use Case: Monitor a Single Publicly Available API Endpoint</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"efb2877ef988e4167af42b3277557aa24\"><a href=\"#monitor_a_CDN\" target=\"_self\">Use Case: Monitor a CDN via Assets it Loads</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"eea51a714ff984b5b188bb78841259fac\"><a href=\"#http_header_connect_to_IP\" target=\"_self\">Use Case: Use a Host Header to Connect to IP Addresses Directly</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"efad6e12b8fc96b56767ac7c8dcf62a3a\"><a href=\"#monitor_a_proxy\" target=\"_self\">Use Case: Monitor a Proxy</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"e3ec2e3d71e7d5601789671a899ac710c\"><a href=\"#custom_user_agent\" target=\"_self\">Creating a Custom User-Agent</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"ed52993d4b025afcd261d788e73bb0acb\"><a href=\"#pass_access_token\" target=\"_self\">Use Case: Pass an Access Token</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"e9efbedf09deb7e19424ecc78bccbaad0\"><a href=\"#failed_checks\" target=\"_self\">Failed Checks</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"ed03798ffe9f86eb70b944f44bfa5cb6d\"><a href=\"#finalizing_https_check\" target=\"_self\">Finalizing Your Check</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"e3bf9b457ebc8ce4bbf3a58fbe788c445\"><a href=\"#other-commands\" target=\"_self\">Other Commands</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"ee1a243674eee23201a140e594167b862\"><a href=\"#about_checker_versions\">A Note on Checker Versions</a></li>\n<li style=\"font-weight: 400;\" data-list-item-id=\"e2a6ddce78c1ebe52b3889bed2aab6b86\"><a href=\"#use_cases\" target=\"_self\">Use Cases and Examples</a></li>\n</ul><iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/b4LnVd-KHRs?si=1OfLucm8QMZ8y_Vg\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen=\"allowfullscreen\"></iframe><p><a name=\"https_check_setup\"></a></p><h2 id=\"h_01HB90T79QZWHY0QSSPXQWM1A7\">Adding Your First HTTP(S) Check</h2><p><a href=\"#return\">Return</a></p><p>To add a new HTTP(S) Check, click <strong>Monitoring</strong>, and then <strong>Add New</strong>. Select <strong>Website</strong> <strong>HTTP(S)</strong> from the <strong>Check Type</strong> drop-down menu. </p><p>HTTP(S) checks monitor a specific web or IP address to ensure the URL response code is 200 OK, in intervals ranging from 1 minute to 1 hours, with<a href=\"https://support.uptime.com/hc/en-us/articles/360006291539-Uptime-com-Reporting#performance-graphs\"> performance reporting</a> and alerts. Optional parameters provide additional functionality.</p><p><strong>Please note: </strong>the HTTPS check will follow a maximum of 15 redirects. The HTTP(S) check also supports self-signed certificates.</p><h2 id=\"h_01HB90T79QCJH29XV440TV68XZ\">\n<a name=\"basic_setup\"></a>Basic Setup</h2><p><a href=\"#return\">Return</a></p><p>The required attributes for an HTTP(S) check include:</p><ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e2e9ef80a57880c1476a664354e376045\"><span style=\"font-weight: 400;\">Check interval</span></li>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"eabe0869a7ea3115263db7c4c126b954f\"><span style=\"font-weight: 400;\">Locations</span></li>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e0010cee2216c26f7225f8d1ea6d1658e\"><span style=\"font-weight: 400;\">Contacts</span></li>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e9812e0f051af86b7a7cde196b6ff45dc\"><span style=\"font-weight: 400;\">URL or IP address</span></li>\n</ul><p><span style=\"font-weight: 400;\">First, set your check’s minimum monitoring interval and then select which probe server locations Uptime.com will use to monitor. You can add contacts to the check to determine which email address, SMS, phone number or integration will receive an alert if this check reports an outage. </span><br> </p><h2 id=\"h_01HB90T79Q8ZP6WNT3EYDH6GZK\">HTTP(S) Check Use Cases </h2><h2 id=\"h_01HB90T79Q0B7VF6J4JX5TA221\">\n<a name=\"monitor_API_endpoint\"></a><span style=\"font-weight: 400;\">Monitor a Single Publicly Available API Endpoint</span>\n</h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">This use case will involve monitoring httpbin and detecting a string is returned. We will make a POST request and expect a response. Setup looks like this:</span></p><ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e0bd0e26d1d24d9d829e525a0a60a2317\"><span style=\"font-weight: 400;\">Create an HTTP(S) check to monitor httpbin.org/post</span></li>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e4a7cdd87529ad33afe6c92b476f0be3d\">\n<span style=\"font-weight: 400;\">Click the </span><strong>Optional</strong><span style=\"font-weight: 400;\"> tab, and fill in the </span><strong>String to Post </strong><span style=\"font-weight: 400;\">field with “penguin”</span>\n</li>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e2a1fb169325c7449f6b5b7e28ef8d3ed\">\n<span style=\"font-weight: 400;\">Fill in the </span><strong>String to Expect </strong><span style=\"font-weight: 400;\">field with “penguin”</span>\n</li>\n</ol><p><img src=\"https://support.uptime.com/hc/article_attachments/23279908755612\" width=\"624\" height=\"532\"></p><p><span style=\"font-weight: 400;\">Select a test server if you desire, and then click </span><strong>Run Test </strong><span style=\"font-weight: 400;\">to verify the POST was made and the server returned our expected result. If the returned result differs from the string we expect, or the server code is not 200 OK, we will receive an alert. </span></p><h2 id=\"h_01HB90T79QBGF1Q127V1JPMZ1X\">\n<a name=\"monitor_a_CDN\"></a><span style=\"font-weight: 400;\">Monitor a CDN via Assets It Loads</span>\n</h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">The HTTP(S) Check (</span><a href=\"#about_checker_versions\" target=\"_self\"><span style=\"font-weight: 400;\">version 2.0</span></a><span style=\"font-weight: 400;\">) can help when monitoring a CDN for uptime and responsiveness. You will need more than one HTTP(S) check for increased precision, and each HTTP(S) check will require at least 5 locations for the most accurate possible monitoring. </span></p><p><span style=\"font-weight: 400;\">Create an HTTP(S) check and utilize </span><strong>String to Expect</strong><span style=\"font-weight: 400;\"> to look for important assets that the CDN is responsible for loading, such as CSS or Javascript. Static assets, such as fonts or scripts that do not change by session, are excellent candidates for monitoring your CDN.  </span></p><p><img src=\"https://support.uptime.com/hc/article_attachments/23279915632412\" width=\"589\" height=\"854\"></p><p><span style=\"font-weight: 400;\">Multiple locations are important since they trigger the CDN to load assets from different regions, thereby providing a picture of performance and uptime with accurate geographical data.</span></p><h2 id=\"h_01HB90T79QFZKNBE8JNF2948PK\">\n<a name=\"http_header_connect_to_IP\"></a><span style=\"font-weight: 400;\">Use a Host Header to Connect to IP Addresses Directly </span>\n</h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">When using a load balancer, you may have multiple servers behind a single endpoint/IP address. Or if using DNS failover, you may have multiple DNS records for the same host. Using a host header and the IP address directly allows you to monitor these servers with the HTTP check.</span></p><p><span style=\"font-weight: 400;\">You will need:</span></p><ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"e793adb7ba4ce83e6d74e682789500020\"><span style=\"font-weight: 400;\">A HTTP(S) Check for each IP address your load balance utilizes</span></li>\n<li style=\"font-weight: 400;\" aria-level=\"1\" data-list-item-id=\"eabed5a484d0f0fb0fa7205883d5be5be\"><span style=\"font-weight: 400;\">The “Host” header</span></li>\n</ul><p><span style=\"font-weight: 400;\">Create a check that uses the IP of a server. Go to the </span><strong>Optional</strong><span style=\"font-weight: 400;\"> tab, and enter the following into the HTTP Headers field:</span></p><pre class=\"wysiwyg-code-block\"><code class=\"language-auto\">Host: YOURURL.com</code></pre><p><span style=\"font-weight: 400;\">If the check fails, you will receive a notification for the IP address of the server that failed, providing more specific insight into how your load balance is faring. </span></p><h2 id=\"h_01HB90T79Q6EYHPD4P6MJQMJM4\">\n<a name=\"monitor_a_proxy\"></a><span style=\"font-weight: 400;\">Monitoring a Proxy</span>\n</h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">You can run your check via a HTTP or HTTPS Proxy by entering a complete proxy URL such as </span><a href=\"http://user:pass@myproxy.com:8888\"><span style=\"font-weight: 400;\">http://user:pass@myproxy.com:8888</span></a><span style=\"font-weight: 400;\"> into the </span><strong>Optional</strong><span style=\"font-weight: 400;\"> field, </span><strong>Proxy URL. </strong></p><h2 id=\"h_01HB90T79QGM0VVQG6T2ZRE0AH\"><img src=\"https://support.uptime.com/hc/article_attachments/23279915633180\" width=\"589\" height=\"866\"></h2><h2 id=\"custom_user_agent\">\n<span style=\"font-weight: 400;\"> Creating a Custom User-Agent</span><br> </h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"color: #373c50;\">In some situations, it may be necessary to pass a custom user-agent to your check. A user-agent can be used to identify web traffic among other things. You can pass your own custom user-agent header to your HTTPS check by utilizing the HTTP Headers field in the <strong>Validation &amp; Security</strong> tab of your HTTPS check.</span></p><p><span style=\"color: #373c50;\"><img src=\"https://support.uptime.com/hc/article_attachments/27444999140636\" width=\"818\" height=\"1095\"></span></p><p><span style=\"color: #373c50;\">You can add additional headers in this field, one per line.</span></p><p><span style=\"color: #373c50;\"><strong>Special note for monitoring Shopify stores</strong>: Recent changes to Shopify’s security policies may cause some HTTPS checks to fail when monitoring Shopify stores due to blocked user-agents. For monitoring these stores, we recommend adding a user agent to something unique like \"<strong>shopname</strong>\" or \"<strong>yourdomain</strong>.” This will bypass the security policy and allow monitoring of your Shopify store, as well as associating the traffic with a custom user-agent that can be referenced in your logs.</span></p><p> </p><h2 id=\"h_01HB90T79QX63AHP429T111JVE\">\n<a name=\"pass_access_token\"></a><span style=\"font-weight: 400;\">Pass an Access Token</span>\n</h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">An authentication token identifies a user, and is a popular alternative to basic authorization. While still not fully secure, its alternative method of identifying a user is useful in certain situations. This type of check will monitor a URL that requires an authentication token for up or down status, offering first alert capabilities for a variety of uses. </span></p><p><span style=\"font-weight: 400;\">We’ll use HTTPbin for this test. Monitor httpbin.org/bearer with a test token you create. Our example is below:</span></p><h2 id=\"h_01HB90T79QB5F6C4NJZ1494NR2\"><img src=\"https://support.uptime.com/hc/article_attachments/23279908761116\" width=\"595\" height=\"855\"></h2><p><span style=\"font-weight: 400;\">We can take this a step further with RegEx. HTTPbin prints the token we’re looking at on its next page. If we know the length and the character contents, a simple regular expression can find what we’re looking for:</span></p><p><img src=\"https://support.uptime.com/hc/article_attachments/23279908762012\" width=\"593\" height=\"866\"></p><h2 id=\"h_01HB90T79RXJA8HN14TJY0YXJB\">\n<span style=\"font-weight: 400;\"></span><a name=\"failed_checks\"></a>Failed Checks</h2><p><a href=\"#return\">Return</a></p><p>We have multiple options for viewing reporting related to a check. The first contact, and preferred notification method, was defined when you created your Uptime account. You were asked to enter the email and extended contact information for the individuals to notify on your team. If a check fails, these contacts will receive notifications of failure by default.</p><p><span style=\"font-weight: 400;\">You will receive an automated message informing you that the URL is “down,” alongside a response code, and location codes from the probe servers used in monitoring the check. You will also see which checks failed in the description of the downtime event. Notice our warning informs us the server is returning 200 OK, but the string we’re expecting is not present:</span></p><p><span style=\"font-weight: 400;\"><img src=\"https://support.uptime.com/hc/article_attachments/4408732956946\" alt=\"uptime-alert-email.png\"></span></p><p><span style=\"font-weight: 400;\">Login to Uptime.com and visit the dashboard for instant access to reports. Review </span><a href=\"https://support.uptime.com/hc/en-us/articles/360004800699-Using-Real-Time-Analysis-with-Uptime-com\"><span style=\"font-weight: 400;\">real-time analysis</span></a><span style=\"font-weight: 400;\"> to see more technical data about the problem. In this case, we’ve instructed our check to look for a non-existent page:</span></p><p><span style=\"font-weight: 400;\"><img src=\"https://support.uptime.com/hc/article_attachments/4408732959122\" alt=\"alert-details.png\"></span></p><p>We will fix our check and wait for testing to indicate the website is back up. Uptime’s next check will observe the URL is now functioning, and run the validation we defined. Uptime will send our contacts a new message informing us the site is back up, and the total length of downtime.</p><p><a name=\"finalizing_https_check\"></a></p><h2 id=\"h_01HB90T79RT1H2RVWHGG24ADY3\">Finalizing Your Check</h2><p><a href=\"#return\">Return</a></p><p><span style=\"font-weight: 400;\">Before finalizing your check, utilize the </span><a href=\"https://support.uptime.com/hc/en-us/articles/360001187805-Uptime-com-Check-Field-Explanations#run_test\" target=\"_self\"><strong>Run Test</strong></a><span style=\"font-weight: 400;\"> button to verify your settings are returning the expected results. To run a test, select from any of the probe server locations available to your account from the Location dropdown and click </span><strong>Run Test</strong><span style=\"font-weight: 400;\">.</span></p><p><img src=\"https://support.uptime.com/hc/article_attachments/23279915637404\" width=\"624\" height=\"415\"></p><p>Before saving, every HTTP(S) check must have the following:</p><ul>\n<li data-list-item-id=\"ee66224f45a11f707095e29174c017afb\">Name</li>\n<li data-list-item-id=\"e87de4fb00cc109461f14c50dd404ca54\">Defined interval</li>\n<li data-list-item-id=\"eec7a777287cb4c5c5c99685b355f2f4a\">Contacts - Choose a specific list of contacts that should be notified</li>\n<li data-list-item-id=\"e308e0ee8900ee0832fb25c2908fd052e\">Locations of probe servers from which to test (Use a minimum of three probe servers)</li>\n<li data-list-item-id=\"e1ff981cb769ec889b49beaabe89e04ab\">Select “Website HTTP(S)” Check Type</li>\n<li data-list-item-id=\"ebac101f33fc450fa7bc3ec11b759c6e0\">Enter a URL</li>\n</ul><p>This check will run automatically with no need for further input on our end. We can respond to incidents as they happen, and edit the parameters of this check as needed to change the string to expect, or any other value.</p><h2 id=\"other-commands\"><span style=\"font-weight: 400;\">Other Commands</span></h2><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">In addition to the check itself, you can schedule routine maintenance downtime, or control how long it takes to escalate downtime events.</span></p><p><span style=\"font-weight: 400;\">Please take a moment to familiarize yourself with the  </span><a href=\"https://support.uptime.com/hc/en-us/articles/360001187805-Uptime-Checks-Field-Explanations\"><span style=\"font-weight: 400;\">Uptime Checks Field Explanation Support Article</span></a><span style=\"font-weight: 400;\">. We’ve also included a notes section in this Check for any additional information you’d like to save for future reference.</span></p><h4 id=\"h_01HB90T79R2VYJNTV49E0DRQ17\">\n<a name=\"about_checker_versions\"></a><span style=\"font-weight: 400;\">A Note on Checker Versions</span><br> </h4><p><a href=\"#return\"><span style=\"font-weight: 400;\">Return</span></a></p><p><span style=\"font-weight: 400;\">1.0 HTTP(S) Checker and 2.0 HTTP(S) checker</span></p><p><span style=\"font-weight: 400;\">The HTTP(S) checker has two versions to utilize. The legacy version is a standard HTTP(S) check that monitors a URL or IP address for OK 200. The 2.0 version is based on cURL and it supports certificate verification for SSL/TLS, as well as HTTP/2, SSL v3 and chunked content.</span></p><p><strong>Please note:</strong><span style=\"font-weight: 400;\"> the HTTP(S) check can handle self-signed certificates. However, it is important users utilizing self-signed certificates turn </span><strong>Verify Certificates</strong><span style=\"font-weight: 400;\"> to </span><strong>Off</strong><span style=\"font-weight: 400;\"> as depicted below:</span></p><h2 id=\"h_01HB90T79RYG2WD933K64XNW1F\"><img src=\"https://support.uptime.com/hc/article_attachments/23279908763932\" width=\"607\" height=\"865\"></h2><h2 id=\"h_01JMCPH952QFKQBPW0QAR5HGZY\">\n<a name=\"use_cases\"></a><span style=\"font-weight: 400;\">Use Cases and Examples</span>\n</h2><p><a href=\"#return\">Return</a></p><p>You may use our Secure Vault to securely store your details. For more information review our <a href=\"https://support.uptime.com/hc/en-us/articles/15407750669852-Using-the-Uptime-com-Secure-Vault\" target=\"_blank\" rel=\"noopener noreferrer\">support doc</a>.</p><p><span class=\"wysiwyg-underline\"><img src=\"https://support.uptime.com/hc/article_attachments/23279915643676\" width=\"606\" height=\"782\"></span></p>"}}