---
title: "Store one bounded binary chunk with server-side SHA-256 verification"
method: PUT
path: "/api/project-upload/uploads/:uploadId/chunks/:index"
tags: ["Project ingest"]
---

# Store one bounded binary chunk with server-side SHA-256 verification

`PUT /api/project-upload/uploads/:uploadId/chunks/:index`

## Request

- Base URL: `https://api.cernion.de`
- URL: `https://api.cernion.de/api/project-upload/uploads/:uploadId/chunks/:index`
- Auth: none declared

Tenant-scoped resumable project ingest. SHA-256 hashes are lowercase hex. Chunks use a raw octet stream; status lists received and missing indexes. Completed originals trigger project.object.received.v1. The async job is polled through /api/jobs/:jobId/status.

## Path parameters

- `uploadId` string, required
- `index` integer, required

## Query parameters

- `hash` string, required
- `token` string

## Response `200`

Store one bounded binary chunk with server-side SHA-256 verification

- object
  - `uploadId` string
  - `objectId` string
  - `chunkSize` integer
  - `status` 'receiving' | 'received' | 'failed' | 'extracted'
  - `chunks` object[]
  - `missing` integer[]
  - `job` object
    - `jobId` string
    - `status` string

## Other responses

- `403`: Insufficient sensitivity clearance or authentication
- `404`: Upload/project absent or invisible
- `409`: Immutable project, failed upload or missing chunks
- `413`: Project, file, chunk or archive limit exceeded
- `422`: Invalid hash or unsafe archive
- `429`: Tenant async job quota exhausted
- `507`: Insufficient free disk space

---

[API](https://skmtc.dev/cernion/apis/cernion-energy-tools-api.md) · [All operations](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cernion/apis/cernion-energy-tools-api/revisions/cdb94473b538?raw)
