Skip to content
Start here

Get a page test result

speed.pages.tests.get(strtest_id, TestGetParams**kwargs) -> Test
GET/zones/{zone_id}/speed_api/pages/{url}/tests/{test_id}

Retrieves the result of a specific test.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Zone Settings WriteZone Settings Read
ParametersExpand Collapse
zone_id: str

Identifier.

maxLength32
url: str

A URL.

test_id: str
ReturnsExpand Collapse
class Test:
id: Optional[str]

UUID.

maxLength36
date: Optional[datetime]
formatdate-time
desktop_report: Optional[LighthouseReport]

The Lighthouse report.

cls: Optional[float]

Cumulative Layout Shift.

device_type: Optional[Literal["DESKTOP", "MOBILE"]]

The type of device.

One of the following:
"DESKTOP"
"MOBILE"
error: Optional[Error]
code: Optional[Literal["NOT_REACHABLE", "DNS_FAILURE", "NOT_HTML", 2 more]]

The error code of the Lighthouse result.

One of the following:
"NOT_REACHABLE"
"DNS_FAILURE"
"NOT_HTML"
"LIGHTHOUSE_TIMEOUT"
"UNKNOWN"
detail: Optional[str]

Detailed error message.

final_displayed_url: Optional[str]

The final URL displayed to the user.

fcp: Optional[float]

First Contentful Paint.

json_report_url: Optional[str]

The URL to the full Lighthouse JSON report.

lcp: Optional[float]

Largest Contentful Paint.

performance_score: Optional[float]

The Lighthouse performance score.

si: Optional[float]

Speed Index.

state: Optional[Literal["RUNNING", "COMPLETE", "FAILED"]]

The state of the Lighthouse report.

One of the following:
"RUNNING"
"COMPLETE"
"FAILED"
tbt: Optional[float]

Total Blocking Time.

ttfb: Optional[float]

Time To First Byte.

tti: Optional[float]

Time To Interactive.

mobile_report: Optional[LighthouseReport]

The Lighthouse report.

cls: Optional[float]

Cumulative Layout Shift.

device_type: Optional[Literal["DESKTOP", "MOBILE"]]

The type of device.

One of the following:
"DESKTOP"
"MOBILE"
error: Optional[Error]
code: Optional[Literal["NOT_REACHABLE", "DNS_FAILURE", "NOT_HTML", 2 more]]

The error code of the Lighthouse result.

One of the following:
"NOT_REACHABLE"
"DNS_FAILURE"
"NOT_HTML"
"LIGHTHOUSE_TIMEOUT"
"UNKNOWN"
detail: Optional[str]

Detailed error message.

final_displayed_url: Optional[str]

The final URL displayed to the user.

fcp: Optional[float]

First Contentful Paint.

json_report_url: Optional[str]

The URL to the full Lighthouse JSON report.

lcp: Optional[float]

Largest Contentful Paint.

performance_score: Optional[float]

The Lighthouse performance score.

si: Optional[float]

Speed Index.

state: Optional[Literal["RUNNING", "COMPLETE", "FAILED"]]

The state of the Lighthouse report.

One of the following:
"RUNNING"
"COMPLETE"
"FAILED"
tbt: Optional[float]

Total Blocking Time.

ttfb: Optional[float]

Time To First Byte.

tti: Optional[float]

Time To Interactive.

region: Optional[LabeledRegion]

A test region with a label.

label: Optional[str]
value: Optional[Literal["asia-east1", "asia-northeast1", "asia-northeast2", 18 more]]

A test region.

One of the following:
"asia-east1"
"asia-northeast1"
"asia-northeast2"
"asia-south1"
"asia-southeast1"
"australia-southeast1"
"europe-north1"
"europe-southwest1"
"europe-west1"
"europe-west2"
"europe-west3"
"europe-west4"
"europe-west8"
"europe-west9"
"me-west1"
"southamerica-east1"
"us-central1"
"us-east1"
"us-east4"
"us-south1"
"us-west1"
schedule_frequency: Optional[Literal["DAILY", "WEEKLY"]]

The frequency of the test.

One of the following:
"DAILY"
"WEEKLY"
url: Optional[str]

A URL.

Get a page test result

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
test = client.speed.pages.tests.get(
    test_id="test_id",
    zone_id="023e105f4ecef8ad9ca31a8372d0c353",
    url="example.com",
)
print(test.id)
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
    "date": "2014-01-01T05:20:00.12345Z",
    "desktopReport": {
      "cls": 100,
      "deviceType": "DESKTOP",
      "error": {
        "code": "NOT_REACHABLE",
        "detail": "Details: net::ERR_CONNECTION_CLOSED",
        "finalDisplayedUrl": "example.com"
      },
      "fcp": 100,
      "jsonReportUrl": "jsonReportUrl",
      "lcp": 100,
      "performanceScore": 90,
      "si": 100,
      "state": "COMPLETE",
      "tbt": 100,
      "ttfb": 100,
      "tti": 100
    },
    "mobileReport": {
      "cls": 100,
      "deviceType": "DESKTOP",
      "error": {
        "code": "NOT_REACHABLE",
        "detail": "Details: net::ERR_CONNECTION_CLOSED",
        "finalDisplayedUrl": "example.com"
      },
      "fcp": 100,
      "jsonReportUrl": "jsonReportUrl",
      "lcp": 100,
      "performanceScore": 90,
      "si": 100,
      "state": "COMPLETE",
      "tbt": 100,
      "ttfb": 100,
      "tti": 100
    },
    "region": {
      "label": "Iowa, USA",
      "value": "us-central1"
    },
    "scheduleFrequency": "DAILY",
    "url": "example.com"
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "id": "f174e90a-fafe-4643-bbbc-4a0ed4fc8415",
    "date": "2014-01-01T05:20:00.12345Z",
    "desktopReport": {
      "cls": 100,
      "deviceType": "DESKTOP",
      "error": {
        "code": "NOT_REACHABLE",
        "detail": "Details: net::ERR_CONNECTION_CLOSED",
        "finalDisplayedUrl": "example.com"
      },
      "fcp": 100,
      "jsonReportUrl": "jsonReportUrl",
      "lcp": 100,
      "performanceScore": 90,
      "si": 100,
      "state": "COMPLETE",
      "tbt": 100,
      "ttfb": 100,
      "tti": 100
    },
    "mobileReport": {
      "cls": 100,
      "deviceType": "DESKTOP",
      "error": {
        "code": "NOT_REACHABLE",
        "detail": "Details: net::ERR_CONNECTION_CLOSED",
        "finalDisplayedUrl": "example.com"
      },
      "fcp": 100,
      "jsonReportUrl": "jsonReportUrl",
      "lcp": 100,
      "performanceScore": 90,
      "si": 100,
      "state": "COMPLETE",
      "tbt": 100,
      "ttfb": 100,
      "tti": 100
    },
    "region": {
      "label": "Iowa, USA",
      "value": "us-central1"
    },
    "scheduleFrequency": "DAILY",
    "url": "example.com"
  }
}