---
title: "Get a pre-signed URL to upload an execution archive"
method: POST
path: "/local-sandbox/{local_sandbox_id}/execution-upload-url"
tags: ["local-sandbox"]
---

# Get a pre-signed URL to upload an execution archive

`POST /local-sandbox/{local_sandbox_id}/execution-upload-url`

Returns a pre-signed GCS PUT URL so the caller can upload a tar.gz archive containing `main.py`, `requirements.txt`, etc. for later execution.

## Path parameters

- `local_sandbox_id` string, required — The local sandbox identifier

## Query parameters

- `region` 'us' | 'asia' — Region hint for GCS upload/download bucket selection. Controls which GCS bucket is used for signed URLs so that users geographically closer to an edge bucket get faster transfers. The data is always pulled to the US GKE cluster over Google's private backbone after upload.

## Request body

- ExecutionUploadUrlRequest
  - `execution_name` string, required — Logical name for this execution (e.g. 'init', 'eval_1')

## Response `200`

Successful Response

- ExecutionUploadUrlResponse
  - `upload_url` string, required — Pre-signed GCS PUT URL to upload the archive (.tar.gz)
  - `expires_in_minutes` integer, required — Minutes until the upload URL expires

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/klavis-ai/apis/klavis-ai-https-www-klavis-ai.md) · [All operations](https://skmtc.net/klavis-ai/apis/klavis-ai-https-www-klavis-ai/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/klavis-ai/klavis-ai-https-www-klavis-ai/revisions/1f05ced7280f/schema)
