---
title: "Upload Attachment"
method: POST
path: "/v1/templates/{template_id}/attachments"
tags: ["templates"]
---

# Upload Attachment

`POST /v1/templates/{template_id}/attachments`

Upload a file attachment to a template.

`role` sets the attachment's `file_role` — defaults to 'reference'. The
video-template worker passes 'source' to durably retain the normalized
transcript + original source files (the oracle the Audit Lab grades the SOP
against), so they survive job-artifact cleanup and render in Reference Files.
Only the upload-time roles are accepted here; 'fillable'/'process_map' are
assigned later by the classify/extract pipeline, not by the uploader.

## Path parameters

- `template_id` string, required

## Response `200`

Successful Response

- AttachmentOut
  - `id` string, uuid, required
  - `filename` string, required
  - `file_type` string, required
  - `file_url` string, required
  - `summary` string, nullable
  - `status` string, required
  - `created_at` string, date-time, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
