---
title: "Presign File URL"
method: POST
path: "/v1/presign"
tags: ["Upload"]
---

# Presign File URL

`POST /v1/presign`

## Query parameters

- `instance_id` string, required

## Request body

- PresignIn
  - `file_url` string, uri, required — A BlindPay file URL previously returned by POST /upload. URLs from any other host are rejected.

## Response `200`

Returns a signed URL for the file, valid for 1 hour

- PresignOut
  - `file_url` string, required — Time-limited signed URL that grants read access to the file.
  - `expires_at` string, required — ISO 8601 timestamp at which the signed URL stops working (1 hour after issuance).

## Other responses

- `400` — Possible error codes: `FILES_URL_INVALID`, `VALIDATION_FAILED`. See the Error responses section for retry semantics.
- `401` — Possible error codes: `AUTH_UNAUTHORIZED`. See the Error responses section for retry semantics.
- `403` — Possible error codes: `AUTH_FORBIDDEN`. See the Error responses section for retry semantics.
- `429` — Possible error codes: `AUTH_RATE_LIMITED`. See the Error responses section for retry semantics.
- `500` — Possible error codes: `INTERNAL_ERROR`. See the Error responses section for retry semantics.

---

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