---
title: "Get presigned URL for extractor submission"
method: POST
path: "/v1/extractors/submissions/uploads"
tags: ["Extractors"]
---

# Get presigned URL for extractor submission

`POST /v1/extractors/submissions/uploads`

Step 1: Get a presigned URL to upload your extractor archive to S3.

## Request body

- CreateSubmissionUploadRequest
  - `name` string, required — Extractor name: 3-64 chars, letters/numbers/underscores, starts with a letter (no hyphens)
  - `version` string, required — Version string (e.g., 'v1', '1.0.0')
  - `description` string — Human-readable description of the extractor
  - `file_size_bytes` integer, nullable — Expected archive size in bytes (500MB max)
  - `file_name` string, nullable — Optional archive filename hint. Must end in .zip — submissions only accept zip archives (upload Content-Type: application/zip).

## Response `200`

Successful Response

- SubmissionPresignedURLResponse
  - `submission_id` string, required
  - `presigned_url` string, required
  - `s3_key` string, required
  - `required_content_type` string
  - `expires_at` string, date-time, required
  - `name` string, required
  - `version` string, required

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/mixpeek/apis/mixpeek-api.md) · [All operations](https://skmtc.net/mixpeek/apis/mixpeek-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mixpeek/mixpeek-api/versions/23e05292e326/schema)
