In this example, we are going to use the GraphQL Analytics API to query aggregated metrics about HTTP events by hostname over a specific period of time.
The following API call will request the number of visits and edge response bytes for the custom hostname hostname.example.com over a four day period. Be sure to replace CLOUDFLARE_ZONE_TAG and API_TOKEN1 with your zone ID and API credentials, and adjust the datetime_geq and datetime_leq values as needed.
echo '{ "query":
"query RequestsAndDataTransferByHostname($zoneTag: string, $filter:filter) {
viewer {
zones(filter: {zoneTag: $zoneTag}) {
httpRequestsAdaptiveGroups(limit: 10, filter: $filter) {
sum {
visits
edgeResponseBytes
}
dimensions {
datetimeHour
}
}
}
}
}",
"variables": {
"zoneTag": "<CLOUDFLARE_ZONE_TAG>",
"filter": {
"datetime_geq": "2022-07-20T11:00:00Z",
"datetime_lt": "2022-07-24T12:00:00Z",
"clientRequestHTTPHost": "hostname.example.com",
"requestSource": "eyeball"
}
}
}' | tr -d '\n' | curl --silent \
https://api.cloudflare.com/client/v4/graphql \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data @- | jq .The returned results will be in JSON format (as requested), so piping the output to jq will make them easier to read, like in the following example:
{
"data": {
"viewer": {
"zones": [
{
"httpRequestsAdaptiveGroups": [
{
"dimensions": {