---
title: "Complete multistep upload"
method: POST
path: "/uploaded"
---

# Complete multistep upload

`POST /uploaded`

Final step in the multistep upload process. Called with the redirect URL from S3
after successful file upload to provide additional plan metadata and trigger scoring.

## Request body

- MultistepUploadRequest
  - `description` string — Short description of the plan
  - `incumbents` string[] — Ordered list of incumbency scenario strings for each district
  - `vote_swings` number[] — Ordered list of vote swings to model for each district
  - `model_version` string — Predictive model version. If omitted, the most recent one is used.
  - `library_metadata` LibraryMetadata — Additional metadata about the plan, particularly for library/historical plans. The following properties are displayed specially in the plan UI, but other properties are also allowed.
    - `authoritative_link` string, uri — URL to the authoritative source for this plan (e.g., state legislature website)
    - `predecessor_link` string, uri — URL to the preceding enacted plan that this plan replaces or succeeds
    - `shapefile_file` string, uri — URL to download the plan as a shapefile
    - `blockassign_file` string, uri — URL to download the block assignment file for this plan
    - `notes` string — Explanatory notes about the plan, its history, or other relevant context

## Response `200`

Upload completed successfully

- UploadResponse
  - `index_url` string, uri, required — Machine-readable JSON representation of the plan being scored. The response follows the structure defined in the PlanIndex schema.
  - `plan_url` string, uri, required — Human-readable web page with graphs and maps for the plan

## Other responses

- `400` — Bad request - invalid upload data
- `401` — Authentication required

## Changes

- **2026-01-07** `44e237dbb2c6` — 1 info
  - added the new optional request property `vote_swings`
- **2025-12-03** `b70a9c260a66` — 5 info
  - added the new optional request property `library_metadata/authoritative_link`
  - added the new optional request property `library_metadata/blockassign_file`
  - added the new optional request property `library_metadata/notes`
  - added the new optional request property `library_metadata/predecessor_link`
  - …1 more
- **2025-11-13** `baf6158b0ed2` — 6 warning
  - removed the request property `library_metadata/authoritative_link`
  - removed the request property `library_metadata/blockassign_file`
  - removed the request property `library_metadata/notes`
  - removed the request property `library_metadata/predecessor_link`
  - …2 more

[Change history](https://skmtc.dev/planscore/apis/planscore-api/changes/uploaded/post.md)

---

[API](https://skmtc.dev/planscore/apis/planscore-api.md) · [All operations](https://skmtc.dev/planscore/apis/planscore-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/planscore/planscore-api/revisions/124d888b2d0d/schema)
