Skip to content
Start here

Create scheduled page test

speed.schedule.create(strurl, ScheduleCreateParams**kwargs) -> ScheduleCreateResponse
POST/zones/{zone_id}/speed_api/schedule/{url}

Creates a scheduled test for a page.

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 Write
ParametersExpand Collapse
zone_id: str

Identifier.

maxLength32
url: str

A URL.

frequency: Optional[Literal["DAILY", "WEEKLY"]]

The frequency of the scheduled test. Defaults to WEEKLY for free plans, DAILY for paid plans.

One of the following:
"DAILY"
"WEEKLY"
region: 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"
ReturnsExpand Collapse
class ScheduleCreateResponse:
schedule: Optional[Schedule]

The test schedule.

frequency: Optional[Literal["DAILY", "WEEKLY"]]

The frequency of the test.

One of the following:
"DAILY"
"WEEKLY"
region: 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"
url: Optional[str]

A URL.

test: Optional[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.

Create scheduled page test

import os
from cloudflare import Cloudflare

client = Cloudflare(
    api_token=os.environ.get("CLOUDFLARE_API_TOKEN"),  # This is the default and can be omitted
)
schedule = client.speed.schedule.create(
    url="example.com",
    zone_id="023e105f4ecef8ad9ca31a8372d0c353",
)
print(schedule.schedule)
{
  "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": {
    "schedule": {
      "frequency": "DAILY",
      "region": "us-central1",
      "url": "example.com"
    },
    "test": {
      "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": {
    "schedule": {
      "frequency": "DAILY",
      "region": "us-central1",
      "url": "example.com"
    },
    "test": {
      "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"
    }
  }
}