---
title: "Measure the site now (target site, the default), or its old site next to it after an import (target import); runs in the background"
method: POST
path: "/projects/{projectId}/speed"
tags: ["Accelerator"]
---

# Measure the site now (target site, the default), or its old site next to it after an import (target import); runs in the background

`POST /projects/{projectId}/speed`

## Request

- Base URL: `https://hostingsurge.com/api/v1`
- URL: `https://hostingsurge.com/api/v1/projects/{projectId}/speed`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Host-hs_session`

## Path parameters

- `projectId` string, uuid, required

## Request body

- object
  - `target` 'site' | 'import'

## Response `200`

Started

- object
  - `projectId` string, uuid, required
  - `url` string, nullable, required
  - `latest` object, nullable, required
    - `id` string, uuid, required
    - `projectId` string, uuid, required
    - `kind` 'manual' | 'deploy' | 'accelerator' | 'import_before' | 'import_after', required
    - `url` string, required
    - `error` string, nullable, required
    - `score` integer, nullable, required
    - `metrics` object, nullable, required
      - `dnsMs` number, nullable, required
      - `connectMs` number, nullable, required
      - `tlsMs` number, nullable, required
      - `waitMs` number, nullable, required
      - `ttfbMs` number, nullable, required
      - `redirects` integer, required
      - `http2` boolean, required
      - `http3` boolean, required
      - `requests` integer, required
      - `pageBytes` integer, required
      - `decodedBytes` integer, required
      - `bytesByType` object, required
        - `document` integer
        - `stylesheet` integer
        - `script` integer
        - `image` integer
        - `font` integer
        - `other` integer
      - `compressedShare` number, nullable, required
      - `brotliShare` number, nullable, required
      - `cachedShare` number, nullable, required
      - `repeatRequests` integer, required
      - `repeatBytes` integer, required
      - `modernImageShare` number, nullable, required
      - `firstPaintMs` integer, required
      - `loadMs` integer, required
    - `checks` object[], required
      - `key` 'server_response' | 'compression' | 'browser_cache' | 'images' | 'page_weight' | 'http3', required
      - `status` 'pass' | 'warn' | 'fail' | 'none', required
      - `value` number, nullable, required
    - `heaviest` object[], required
      - `url` string, required
      - `type` 'document' | 'stylesheet' | 'script' | 'image' | 'font' | 'other', required
      - `bytes` integer, required
    - `truncated` boolean, required
    - `measuredAt` string, required: ISO-8601 timestamp
  - `baseline` object, nullable, required
    - `id` string, uuid, required
    - `kind` 'manual' | 'deploy' | 'accelerator' | 'import_before' | 'import_after', required
    - `url` string, required
    - `error` string, nullable, required
    - `score` integer, nullable, required
    - `measuredAt` string, required: ISO-8601 timestamp
    - `loadMs` integer, nullable, required
    - `ttfbMs` number, nullable, required
    - `pageBytes` integer, nullable, required
  - `importComparison` object, nullable, required
    - `before` object, required
      - `id` string, uuid, required
      - `projectId` string, uuid, required
      - `kind` 'manual' | 'deploy' | 'accelerator' | 'import_before' | 'import_after', required
      - `url` string, required
      - `error` string, nullable, required
      - `score` integer, nullable, required
      - `metrics` object, nullable, required
        - `dnsMs` number, nullable, required
        - `connectMs` number, nullable, required
        - `tlsMs` number, nullable, required
        - `waitMs` number, nullable, required
        - `ttfbMs` number, nullable, required
        - `redirects` integer, required
        - `http2` boolean, required
        - `http3` boolean, required
        - `requests` integer, required
        - `pageBytes` integer, required
        - `decodedBytes` integer, required
        - `bytesByType` object, required
          - `document` integer
          - `stylesheet` integer
          - `script` integer
          - `image` integer
          - `font` integer
          - `other` integer
        - `compressedShare` number, nullable, required
        - `brotliShare` number, nullable, required
        - `cachedShare` number, nullable, required
        - `repeatRequests` integer, required
        - `repeatBytes` integer, required
        - `modernImageShare` number, nullable, required
        - `firstPaintMs` integer, required
        - `loadMs` integer, required
      - `checks` object[], required
        - `key` 'server_response' | 'compression' | 'browser_cache' | 'images' | 'page_weight' | 'http3', required
        - `status` 'pass' | 'warn' | 'fail' | 'none', required
        - `value` number, nullable, required
      - `heaviest` object[], required
        - `url` string, required
        - `type` 'document' | 'stylesheet' | 'script' | 'image' | 'font' | 'other', required
        - `bytes` integer, required
      - `truncated` boolean, required
      - `measuredAt` string, required: ISO-8601 timestamp
    - `after` object, required
      - `id` string, uuid, required
      - `projectId` string, uuid, required
      - `kind` 'manual' | 'deploy' | 'accelerator' | 'import_before' | 'import_after', required
      - `url` string, required
      - `error` string, nullable, required
      - `score` integer, nullable, required
      - `metrics` object, nullable, required
        - `dnsMs` number, nullable, required
        - `connectMs` number, nullable, required
        - `tlsMs` number, nullable, required
        - `waitMs` number, nullable, required
        - `ttfbMs` number, nullable, required
        - `redirects` integer, required
        - `http2` boolean, required
        - `http3` boolean, required
        - `requests` integer, required
        - `pageBytes` integer, required
        - `decodedBytes` integer, required
        - `bytesByType` object, required
          - `document` integer
          - `stylesheet` integer
          - `script` integer
          - `image` integer
          - `font` integer
          - `other` integer
        - `compressedShare` number, nullable, required
        - `brotliShare` number, nullable, required
        - `cachedShare` number, nullable, required
        - `repeatRequests` integer, required
        - `repeatBytes` integer, required
        - `modernImageShare` number, nullable, required
        - `firstPaintMs` integer, required
        - `loadMs` integer, required
      - `checks` object[], required
        - `key` 'server_response' | 'compression' | 'browser_cache' | 'images' | 'page_weight' | 'http3', required
        - `status` 'pass' | 'warn' | 'fail' | 'none', required
        - `value` number, nullable, required
      - `heaviest` object[], required
        - `url` string, required
        - `type` 'document' | 'stylesheet' | 'script' | 'image' | 'font' | 'other', required
        - `bytes` integer, required
      - `truncated` boolean, required
      - `measuredAt` string, required: ISO-8601 timestamp
  - `importSourceUrl` string, nullable, required
  - `history` object[], required
    - `id` string, uuid, required
    - `kind` 'manual' | 'deploy' | 'accelerator' | 'import_before' | 'import_after', required
    - `url` string, required
    - `error` string, nullable, required
    - `score` integer, nullable, required
    - `measuredAt` string, required: ISO-8601 timestamp
    - `loadMs` integer, nullable, required
    - `ttfbMs` number, nullable, required
    - `pageBytes` integer, nullable, required
  - `running` boolean, required

## Other responses

- `400`: Invalid request, e.g. a setting out of range (code invalid_request)
- `401`: Missing or invalid session/token (code unauthorized)
- `403`: Authenticated but not permitted (code forbidden)
- `404`: Not found or not visible to the caller (code not_found)
- `409`: Nothing to do yet, e.g. the site is not live or already being measured (code conflict)
- `429`: Too soon: once a minute per site, or other measurements are running (code rate_limited)

---

[API](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api.md) · [All operations](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hostingsurge/apis/hostingsurge-platform-api/revisions/4d08337cdff1?raw)
