---
title: "Get Upload Url"
method: POST
path: "/api/tf/tables/{table_id}/upload-url"
tags: ["tableflow"]
---

# Get Upload Url

`POST /api/tf/tables/{table_id}/upload-url`

## Request

- Base URL: `https://api.tintin-x.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tintin-x.com/api/tf/tables/{table_id}/upload-url`
- Auth: HTTP bearer

Mint a presigned S3 PUT for an image / video / attachment cell.

The FE flow is:
  1. POST here with {filename, content_type, size_bytes} →
     {upload_url, s3_key, max_size_bytes}
  2. PUT the file bytes directly to upload_url (sends
     Content-Type matching `content_type`)
  3. PATCH the cell with `{value: {s3_key, content_type, ...metadata}}`

The cell-write validator pins the s3_key to the
`assets/tableflow/` prefix so a leaked URL can't be redirected.

## Path parameters

- `table_id` string, uuid, required

## Request body

- SrcTableflowSchemasUploadUrlRequest: POST /tables/{id}/upload-url body.
  - `filename` string, required
  - `content_type` string, required
  - `size_bytes` integer, nullable

## Response `200`

Successful Response

- SrcTableflowSchemasUploadUrlResponse
  - `upload_url` string, required
  - `s3_key` string, required
  - `max_size_bytes` integer, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/tintin-x/apis/tintin-api.md) · [All operations](https://skmtc.dev/tintin-x/apis/tintin-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tintin-x/apis/tintin-api/revisions/8839a8d0a66c?raw)
