---
title: "Upload a supporting document"
method: POST
path: "/v1/agents/{id}/attachments"
tags: ["Agents"]
---

# Upload a supporting document

`POST /v1/agents/{id}/attachments`

## Request

- Base URL: `https://api.cadencercs.com`
- URL: `https://api.cadencercs.com/v1/agents/{id}/attachments`
- Auth: HTTP bearer

Authorisation letters and similar; Google says they streamline approval. Send the PDF as the raw body with `content-type: application/pdf`, or as JSON `{ contentBase64, displayName }` so an agent can upload without constructing a multipart request.

Can only be done before a launch request exists.

## Path parameters

- `id` string, required

## Query parameters

- `displayName` string

## Request body

- object
  - `contentBase64` string, required: The PDF, base64-encoded.
  - `displayName` string

## Response `201`

Uploaded.

- object
  - `ok` boolean, required
  - `id` string, required
  - `rbmName` string, nullable
  - `gcsUrl` string, nullable
  - `remaining` number

## Other responses

- `400`: Empty file, missing `contentBase64`, or not a PDF.
- `401`: Not signed in, and no account-linked API key was sent.
- `404`: No such agent on this account.
- `409`: Agent isn't at Google yet, a launch request already exists, or the per-agent limit is reached.
- `413`: Over Google's 50 MB limit.
- `415`: Google accepts PDFs only.
- `500`: Unexpected server error. The body is always JSON.
- `502`: Google rejected the upload. If the agent has never requested verification, the response says so — these documents attach to a verification record.
- `503`: RBM not configured.

---

[API](https://skmtc.dev/cadencercs/apis/cadence-api.md) · [All operations](https://skmtc.dev/cadencercs/apis/cadence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cadencercs/apis/cadence-api/revisions/9438443c2081?raw)
