---
title: "Upload Chunk"
method: POST
path: "/api/v0/chunks/{device_serial}"
tags: ["Upload"]
---

# Upload Chunk

`POST /api/v0/chunks/{device_serial}`

## Request

- Base URL: `https://chunks.memfault.com`
- URL: `https://chunks.memfault.com/api/v0/chunks/{device_serial}`
- Auth: one of:
  - HTTP basic
  - HTTP bearer

Upload one or more **Chunks** for a given **Device** to `chunks.memfault.com`.

Chunks must be sent in sequential order. The device serial is used to identify the device.

**Single chunk upload:**

Use `Content-Type: application/octet-stream` with `Content-Length` required.
Chunks can be Base64-encoded by adding `Content-Encoding: base64`.

**Multiple chunks upload:**

Use `Content-Type: multipart/mixed; boundary=<boundary>` to send multiple chunks in one request.

```
POST /api/v0/chunks/{device_serial}
Content-Type: multipart/mixed; boundary=boundary_value

--boundary_value
Content-Type: application/octet-stream
Content-Length: <chunk_size>

<chunk_data>
--boundary_value--
```

---

#### Return Value

- `202 Accepted` — Chunks queued for processing.
- `400 Bad Request` — Malformed request.
- `403 Forbidden` — Project Key missing or invalid.
- `411 Length Required` — `Content-Length` header missing.
- `413 Payload Too Large` — Chunk exceeds maximum size.
- `415 Unsupported Media Type` — Unsupported `Content-Type`.
- `429 Too Many Requests` — Rate limited; retry after the `Retry-After` header interval.
- `503 Service Unavailable` — Retry after the `Retry-After` header interval.

## Path parameters

- `device_serial` string, required

## Headers

- `Memfault-Project-Key` string, required

## Response `202`

Accepted

---

[API](https://skmtc.dev/memfault/apis/memfault-api-documentation.md) - [All operations](https://skmtc.dev/memfault/apis/memfault-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/memfault/apis/memfault-api-documentation/revisions/8037a30996a2?raw)
