Skip to content
Start here

Create scheduled page test

client.speed.schedule.create(stringurl, ScheduleCreateParams { zone_id, frequency, region } params, RequestOptionsoptions?): ScheduleCreateResponse { schedule, test }
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
url: string

A URL.

params: ScheduleCreateParams { zone_id, frequency, region }
zone_id: string

Path param: Identifier.

maxLength32
frequency?: "DAILY" | "WEEKLY"

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

One of the following:
"DAILY"
"WEEKLY"
region?: "asia-east1" | "asia-northeast1" | "asia-northeast2" | 18 more

Query param: 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
ScheduleCreateResponse { schedule, test }
schedule?: Schedule { frequency, region, url }

The test schedule.

frequency?: "DAILY" | "WEEKLY"

The frequency of the test.

One of the following:
"DAILY"
"WEEKLY"
region?: "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?: string

A URL.

test?: Test { id, date, desktopReport, 4 more }
id?: string

UUID.

maxLength36
date?: string
formatdate-time
desktopReport?: LighthouseReport { cls, deviceType, error, 9 more }

The Lighthouse report.

cls?: number

Cumulative Layout Shift.

deviceType?: "DESKTOP" | "MOBILE"

The type of device.

One of the following:
"DESKTOP"
"MOBILE"
error?: Error { code, detail, finalDisplayedUrl }
code?: "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?: string

Detailed error message.

finalDisplayedUrl?: string

The final URL displayed to the user.

fcp?: number

First Contentful Paint.

jsonReportUrl?: string

The URL to the full Lighthouse JSON report.

lcp?: number

Largest Contentful Paint.

performanceScore?: number

The Lighthouse performance score.

si?: number

Speed Index.

state?: "RUNNING" | "COMPLETE" | "FAILED"

The state of the Lighthouse report.

One of the following:
"RUNNING"
"COMPLETE"
"FAILED"
tbt?: number

Total Blocking Time.

ttfb?: number

Time To First Byte.

tti?: number

Time To Interactive.

mobileReport?: LighthouseReport { cls, deviceType, error, 9 more }

The Lighthouse report.

cls?: number

Cumulative Layout Shift.

deviceType?: "DESKTOP" | "MOBILE"

The type of device.

One of the following:
"DESKTOP"
"MOBILE"
error?: Error { code, detail, finalDisplayedUrl }
code?: "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?: string

Detailed error message.

finalDisplayedUrl?: string

The final URL displayed to the user.

fcp?: number

First Contentful Paint.

jsonReportUrl?: string

The URL to the full Lighthouse JSON report.

lcp?: number

Largest Contentful Paint.

performanceScore?: number

The Lighthouse performance score.

si?: number

Speed Index.

state?: "RUNNING" | "COMPLETE" | "FAILED"

The state of the Lighthouse report.

One of the following:
"RUNNING"
"COMPLETE"
"FAILED"
tbt?: number

Total Blocking Time.

ttfb?: number

Time To First Byte.

tti?: number

Time To Interactive.

region?: LabeledRegion { label, value }

A test region with a label.

label?: string
value?: "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"
scheduleFrequency?: "DAILY" | "WEEKLY"

The frequency of the test.

One of the following:
"DAILY"
"WEEKLY"
url?: string

A URL.

Create scheduled page test

import Cloudflare from 'cloudflare';

const client = new Cloudflare({
  apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});

const schedule = await client.speed.schedule.create('example.com', {
  zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
});

console.log(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"
    }
  }
}