---
title: "Upload a PDF to a policy version (UI-only)"
method: POST
path: "/v1/policies/{id}/pdf"
tags: ["Policies"]
---

# Upload a PDF to a policy version (UI-only)

`POST /v1/policies/{id}/pdf`

Uploads a PDF via multipart `file` or base64 `fileData` JSON. Defaults to the latest draft if no `versionId`; 400 if no draft is available. UI-only — AI clients should use the presigned `/pdf/upload-url` + `/pdf/confirm` flow.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string

## Request body

- union
  - object — Multipart file upload (recommended)
    - `file` string, binary, required
    - `versionId` string — Target version ID. If omitted, uploads to the latest draft version.
  - object — JSON with base64-encoded file data
    - `fileName` string, required
    - `fileType` string, required
    - `fileData` string, required — Base64-encoded file content
    - `versionId` string — Target version ID. If omitted, uploads to the latest draft version.

## Response `201`

---

[API](https://skmtc.net/trycompai/apis/comp-ai-api.md) · [All operations](https://skmtc.net/trycompai/apis/comp-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/trycompai/comp-ai-api/revisions/726b9523fb22/schema)
