---
title: "Public Upload Init"
method: POST
path: "/api/v1/public/upload/init"
tags: ["public-api"]
---

# Public Upload Init

`POST /api/v1/public/upload/init`

## Request

- Base URL: `https://api.slidemaster.tw` (the document declares no server; this is the origin it was published from)
- URL: `https://api.slidemaster.tw/api/v1/public/upload/init`
- Auth: none declared

建立新專案並取得檔案上傳用的 GCS signed URL。

支援 PDF、PPTX、PPT 格式。回傳 upload_url（PUT 方式上傳檔案）和 blob_path。
signed URL 有效期限 60 分鐘。上傳完成後必須呼叫 POST /upload/complete 觸發解析。

必填欄位：title（專案標題）、filename（檔案名稱，含副檔名）。
選填：description（專案描述）。

錯誤：
- 400：不支援的檔案格式。
- 403：使用者已達專案數上限。

## Headers

- `Authorization` string, nullable
- `X-API-Key` string, nullable

## Request body

- PublicUploadInitRequest
  - `title` string, required
  - `filename` string, required
  - `description` string, nullable

## Response `201`

Successful Response

- PublicUploadInitResponse
  - `project_id` string, required
  - `upload_url` string, required
  - `blob_path` string, required
  - `expires_in_minutes` integer
  - `summary` string
  - `next_suggestion` string

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/slidemaster/apis/slidemaster-ai-api.md) · [All operations](https://skmtc.dev/slidemaster/apis/slidemaster-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/slidemaster/apis/slidemaster-ai-api/revisions/a964c005977e?raw)
