---
title: Presign an S3 request
description: Returns one presigned S3 request for one object key.
doc_version: 0.1.0-preview
last_updated: 2026-09-14
---

# Presign an S3 request

`POST /v1/workspaces/{workspaceId}/buckets/{bucketId}/presign`

Returns one presigned S3 request for one object key. Send it before expiresAt, with the returned headers exactly. Operations other than GetObject need the editor role. Role: viewer or higher.

## Authentication

Send `Authorization: Bearer <GRAPHON_API_KEY>`. Read the key from the
GRAPHON_API_KEY environment variable. Never print it.

## Path parameters

- `workspaceId` (string) — The workspace id.
- `bucketId` (string) — The bucket id.

## Request body

- `operation` (string) — One of: PutObject, GetObject, CreateMultipartUpload, UploadPart, CompleteMultipartUpload, AbortMultipartUpload.
- `key` (string) — The object key.
- `contentType` (string (optional)) — The object content type. Used by PutObject, CreateMultipartUpload.
- `lengthBytes` (string (optional)) — The body size in bytes, as a string of digits. It is signed. Used by PutObject, UploadPart.
- `sha256` (string (optional)) — The base64 SHA-256 of the body. G4 signs it and rejects other bytes. Used by PutObject, UploadPart.
- `ifNoneMatch` (string (optional)) — Send * to create only. G4 rejects the PUT if the key exists. One of: *. Used by PutObject.
- `versionId` (string (optional)) — The version to read. Used by GetObject.
- `uploadId` (string (optional)) — The multipart upload id. Used by UploadPart, CompleteMultipartUpload, AbortMultipartUpload.
- `partNumber` (integer (optional)) — The part number, from 1 to 10000. Used by UploadPart.

## Example request

```bash
curl \
  --url "https://g4.beta.graphon.ai/v1/workspaces/wspQ7WsH2Np5L/buckets/bktA1b2C3d4E5/presign" \
  --header "Authorization: Bearer $GRAPHON_API_KEY" \
  --header "Content-Type: application/json" \
  --data '{"operation":"PutObject","key":"incidents/checkout-timeout.json","contentType":"application/json","lengthBytes":"2048"}'
```

## CLI

```bash
graphon objects put support-tickets incidents/checkout-timeout.json --file ./checkout-timeout.json
```

## Sitemap

See the full [sitemap](/sitemap.md) for all pages.
