---
title: "Generate Signed URL"
method: POST
path: "/api/calendars/{calendar_public_id}/signed-url"
tags: ["Calendars"]
---

# Generate Signed URL

`POST /api/calendars/{calendar_public_id}/signed-url`

## Request

- Base URL: `https://addcal.co`
- URL: `https://addcal.co/api/calendars/{calendar_public_id}/signed-url`
- Auth: none required

Generate a signed URL for a protected calendar. The URL includes an expiry timestamp and a cryptographic signature, and expires after the specified number of days.

The calendar must have an access code set. If no `expiry_days` is provided, the calendar's configured `signed_url_expiry_days` is used, or 30 days as a default.

The returned URL grants temporary access based on its signature validity, without exposing the access code. It can be shared with users who need time-limited access.

## Request body

- object
  - `expiry_days` integer: Number of days until the signed URL expires. Min 1, max 365.

## Response `200`

- object
  - `url` string, required: The generated signed URL with expiry and signature-based access

## Other responses

- `422`

---

[API](https://skmtc.dev/addcal/apis/addcal-api-documentation.md) · [All operations](https://skmtc.dev/addcal/apis/addcal-api-documentation/llms.txt) · [OpenAPI document](https://skmtc.dev/addcal/apis/addcal-api-documentation/revisions/addd0607e492?raw)
