---
title: "Presigned URL for uploading a PDF to generate flashcards from"
method: POST
path: "/revise/ai/pdf/upload-url"
tags: ["revise"]
---

# Presigned URL for uploading a PDF to generate flashcards from

`POST /revise/ai/pdf/upload-url`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/revise/ai/pdf/upload-url`
- Auth: HTTP bearer

## Request body

- CreateRevisePdfUploadUrlDto
  - `content_type` 'application/pdf', required
  - `file_size` number, required: Bytes

## Response `200`

- RevisePdfUploadUrlResponseDto
  - `upload_url` string, required: PUT the raw PDF here, with exactly upload_headers and no Authorization header
  - `upload_headers` object, required
  - `file_key` string, required: Pass to POST /revise/ai/generate/pdf
  - `expires_at` string, required

---

[API](https://skmtc.dev/focusbear/apis/focusbear-api.md) - [All operations](https://skmtc.dev/focusbear/apis/focusbear-api/llms.txt) - [OpenAPI document](https://skmtc.dev/focusbear/apis/focusbear-api/revisions/3a83a3b9a811?raw)
