---
title: "Upload"
method: POST
path: "/v1/employer/upload"
tags: ["employer"]
---

# Upload

`POST /v1/employer/upload`

## Request

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

Ingest a de-identified claims CSV through the no-PHI gate (+ persist under RLS when authed).
Returns the ingestion receipt (accepted/rejected counts) and, when priceable, a first diagnosis.

An optional W6e `mapping` renames source headers to ClaimLine fields BEFORE the gate; unmapped
columns still pass through to the gate, so the gate stays the sole write path.

## Request body

- UploadRequest
  - `session_id` string, required
  - `csv_text` string, required: the de-identified claims file as CSV text (header row + rows)
  - `source_label` string: a label for this file, e.g. 'TPA Q3 2026'
  - `data_vintage` string: the data version this batch represents
  - `mapping` object, nullable: optional {source header -> ClaimLine field} renames, applied before the gate

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/vladahealth/apis/vlada-tools-rest.md) · [All operations](https://skmtc.dev/vladahealth/apis/vlada-tools-rest/llms.txt) · [OpenAPI document](https://skmtc.dev/vladahealth/apis/vlada-tools-rest/revisions/26e5d5a3333c?raw)
