Reliable HTTP endpoints that return specific status codes. A modern httpstat.us replacement that's always online. Perfect for testing your monitoring setup, webhooks, error handling, or CI/CD pipelines.
All endpoints are publicly available. No authentication required. Rate limited to prevent abuse.
https://api.uptimesignal.io/test/200
https://api.uptimesignal.io/test/201
https://api.uptimesignal.io/test/400
https://api.uptimesignal.io/test/401
https://api.uptimesignal.io/test/403
https://api.uptimesignal.io/test/404
https://api.uptimesignal.io/test/500
https://api.uptimesignal.io/test/502
https://api.uptimesignal.io/test/503
https://api.uptimesignal.io/test/504
https://api.uptimesignal.io/test/slow
Returns 200 OK after a 5-second delay
https://api.uptimesignal.io/test/timeout
Hangs for 60 seconds (useful for testing timeout handling)
https://api.uptimesignal.io/test/random
Randomly returns 200, 500, or 503
If you were using httpstat.us (httpstatus) for testing, switching to UptimeSignal's test endpoints is straightforward. Here's how to migrate:
Before (httpstat.us)
httpstat.us/200
After (UptimeSignal)
api.uptimesignal.io/test/200
Our endpoints support all common status codes (200, 201, 400, 401, 403, 404, 500, 502, 503, 504) plus special behaviors like slow responses and timeouts. Unlike httpstat.us, we're built on Cloudflare's edge network for reliable, low-latency responses worldwide.
All endpoints return JSON with the following structure:
{
"status": 200,
"message": "OK",
"timestamp": "2024-12-27T12:00:00.000Z",
"powered_by": "UptimeSignal"
}
Verify your monitoring setup correctly detects failures by pointing it at our /test/500 endpoint.
Test how your application handles different HTTP responses from external services.
Validate your deployment health checks work correctly before going to production.
Build and test error handling logic against real HTTP responses.
# Test a 200 OK response
curl -i https://api.uptimesignal.io/test/200
# Test a 500 Internal Server Error
curl -i https://api.uptimesignal.io/test/500
# Test timeout handling (will hang for 60s)
curl -i --max-time 10 https://api.uptimesignal.io/test/timeout
// Test error handling in your app
async function testErrorHandling() {
try {
const response = await fetch('https://api.uptimesignal.io/test/500');
if (!response.ok) {
console.log('Error handled correctly:', response.status);
}
} catch (error) {
console.error('Network error:', error);
}
}
// Test timeout handling
const controller = new AbortController();
setTimeout(() => controller.abort(), 5000);
fetch('https://api.uptimesignal.io/test/timeout', {
signal: controller.signal
}).catch(err => {
if (err.name === 'AbortError') {
console.log('Request timed out as expected');
}
});
import requests
# Test different status codes
endpoints = [200, 400, 404, 500, 503]
for code in endpoints:
response = requests.get(f'https://api.uptimesignal.io/test/{code}')
print(f'{code}: {response.status_code} - {response.json()["message"]}')
# Test timeout handling
try:
response = requests.get(
'https://api.uptimesignal.io/test/timeout',
timeout=5
)
except requests.Timeout:
print('Request timed out as expected')
HTTP status codes are three-digit numbers returned by a server in response to a client's request. They indicate whether the request was successful, encountered an error, or requires further action.
The request was received and is being processed. Rarely seen in practice.
The request was successfully received, understood, and accepted. 200 OK is the most common.
Further action needed to complete the request. 301 and 302 redirects are common.
The request contains bad syntax or cannot be fulfilled. 404 Not Found is the most famous.
The server failed to fulfill a valid request. These indicate server-side problems.
httpstat.us/200 with api.uptimesignal.io/test/200 in your code.
/test/timeout endpoint which hangs for 60 seconds. Set a shorter timeout in your HTTP client (e.g., 5 seconds) and verify your code properly handles the timeout error.
/test/slow waits 5 seconds then returns a 200 OK - useful for testing slow but successful responses. /test/timeout hangs for 60 seconds - designed to trigger timeout errors in clients with shorter timeouts.
Access-Control-Allow-Origin: * headers, so you can use them from browser-based JavaScript applications without CORS issues.
Done testing? Add your actual endpoints to UptimeSignal and get alerted when they go down.
Start monitoring free →25 monitors free. No credit card required.