Request cURL JavaScript Python
Hide Copy GET https://api.tailend.dev/v1/philadelphia/coverageCopy URL
curl -sS \
-H "X-API-Key: $TAILEND_API_KEY" \
"https://api.tailend.dev/v1/philadelphia/coverage" const res = await fetch("https://api.tailend.dev/v1/philadelphia/coverage" , {
headers: { 'X-API-Key' : '$TAILEND_API_KEY' },
});
const body = await res.json();
console.log(res.status, body);import os
import requests
response = requests.get(
"https://api.tailend.dev/v1/philadelphia/coverage" ,
headers={'X-API-Key' : os.environ['TAILEND_API_KEY' ]},
)
response.raise_for_status()
print (response.json())
Response Sample Sample Live Copy 200 400 401 403 404 405 429 500 501 503
Showing sample data. Paste a key to run it live. Get a key
The report
{
"data" : {
"metro" : "philadelphia" ,
"timezone" : "America/New_York" ,
"counts" : {
"event" : 1583 ,
"class" : 648 ,
"camp" : 88 ,
"place" : 983 ,
"ongoing" : 16
},
"events" : {
"future" : 950 ,
"next_7_days" : 165 ,
"next_30_days" : 500 ,
"future_recurring" : 460 ,
"horizon" : "2027-06-01T00:00:00Z"
},
"freshness" : {
"confirmed_last_7d_pct" : 62.3 ,
"confirmed_last_30d_pct" : 84.1 ,
"upcoming_48h_confirmed_12h_pct" : 58 ,
"median_source_age_days" : 8.8
},
"fields" : {
"total" : 2335 ,
"with_organization" : 2167 ,
"with_neighborhood" : 1380 ,
"with_place" : 1823 ,
"with_coordinates" : 1340
},
"organizations" : 357 ,
"sources" : {
"total" : 357
},
"generated_at" : "2026-09-13T12:00:00Z"
}
}Malformed or contradictory parameters (lat without lng, to before from, unknown category), or a cursor this API did not issue for this exact request — replayed from another endpoint, resource, metro or filter set, hand-crafted, or altered.
{
"error" : {
"code" : "bad_request" ,
"message" : "radius_m: must be at least 100" ,
"details" : {
"param" : "radius_m"
},
"request_id" : "req_dfbc3295a8382b05"
}
}Missing, unknown or revoked X-API-Key.
{
"error" : {
"code" : "unauthorized" ,
"message" : "missing X-API-Key header" ,
"request_id" : "req_90e63908273f6bff"
}
}Two different reasons share this status.
{
"error" : {
"code" : "forbidden" ,
"message" : "key is not scoped to metro 'boston'" ,
"details" : {
"metros" : [
"philadelphia"
]
},
"request_id" : "req_9e7a750acef48ab2"
}
}No published, active resource with that id (or unknown metro).
{
"error" : {
"code" : "not_found" ,
"message" : "unknown metro 'boston'" ,
"request_id" : "req_7431b51e10ec2b77"
}
}The path exists; the method does not.
{
"error" : {
"code" : "method_not_allowed" ,
"message" : "POST is not allowed on this path; this API is read-only" ,
"details" : {
"allow" : [
"GET" ,
"HEAD" ,
"OPTIONS"
]
},
"request_id" : "req_01J9Z3"
}
}A limit was reached.
{
"error" : {
"code" : "rate_limited" ,
"message" : "3 requests per minute exceeded" ,
"request_id" : "req_06bfd3c2d5e8aa9f"
}
}A bug on our side.
{
"error" : {
"code" : "internal" ,
"message" : "internal error" ,
"request_id" : "req_01J9Z3"
}
}This endpoint or feature is not available and will not become available without a configuration change — for ?address=, this means no geocoder is configured.
{
"error" : {
"code" : "not_implemented" ,
"message" : "this endpoint is not enabled on this deployment; it is not a fault and retrying will not help" ,
"request_id" : "req_01J9Z3"
}
}A transient outage: a dependency could not be reached or did not answer in time.
{
"error" : {
"code" : "unavailable" ,
"message" : "the service is temporarily unable to serve this request; retry after the interval in Retry-After" ,
"request_id" : "req_01J9Z3"
}
}