---
title: HTTP Upload
description: "Upload a file of a chosen size to an HTTP endpoint and measure uplink throughput, the direction that suffers first when a cell is congested."
lastUpdated: "2026-09-23"
---

> **For AI agents:** the complete documentation index is at [llms.txt](/llms.txt). Append `.md` to any page URL for its markdown version.

Upload a file of a chosen size to an HTTP endpoint and measure uplink throughput, the direction that suffers first when a cell is congested.

## Parameters

| Parameter | Required | Description |
| ----------- | ---------- | ------------- |
| Upload link | Yes | The endpoint that accepts the upload. |
| File size | Yes | Size of the generated payload, in bytes. |
| Upload should fail | No | Invert the verdict. |

Plus the shared [connection settings](/tests/actions/cellular/overview#connection-settings) and DNS override (`command.override_dns`, `command.dns`).

## Results and metrics

In the action report (`result`):

| Field | Description |
|-------|-------------|
| `throughput_in_kbps` | Upload throughput. |
| `md5sum` | Hash of the uploaded payload. |
| `dns_server` | DNS servers used. |
| `duration` | Total execution time in seconds. |

In Analytics, each run feeds the HTTP upload measurement with `throughput_kbps` and `duration_seconds`, tagged by status, URL, APN, antenna, and access technology.

## What's next?

<Columns cols={2}>
  <Card title="Download File" icon="cloud-arrow-down" href="/tests/actions/cellular/download-file">

    The downlink direction, with the full timing waterfall

</Card>
  <Card title="FTP Upload" icon="cloud-arrow-up" href="/tests/actions/cellular/ftp-upload">

    The same measurement over FTP

</Card>
</Columns>
