---
title: "POST /v1/calendars/{id}/connection-links"
method: POST
path: "/v1/calendars/{id}/connection-links"
tags: ["Connection Setup Links"]
---

# POST /v1/calendars/{id}/connection-links

`POST /v1/calendars/{id}/connection-links`

## Request

- Base URL: `https://api.chronary.ai`
- URL: `https://api.chronary.ai/v1/calendars/{id}/connection-links`
- Auth: HTTP bearer

Create a short-lived URL for a human to connect Google Calendar or Microsoft Outlook. The setup URL secret is returned only once; a reused pending link returns setup_url=null.

## Path parameters

- `id` string, required

## Request body

- object
  - `capabilities` string[]: Connection capabilities. "availability" reads free/busy to compute agent availability. "publishing" (writing confirmed Chronary events to the external calendar) is supported for Microsoft Outlook only — Google connections are availability-only and reject the "publishing" capability.
  - `publication_policy` 'none' | 'confirmed' | 'confirmed_tentative'

## Response `201`

Connection setup link created

- CreatedConnectionLink
  - `id` string, required
  - `calendar_id` string, required
  - `status` 'awaiting_human' | 'in_progress' | 'completed' | 'declined' | 'expired' | 'cancelled', required
  - `expires_at` string, date-time, required
  - `setup_url` string, uri, nullable, required
  - `reused` boolean, required

## Other responses

- `400`: Validation error — invalid request body or query parameters
- `404`: Resource not found

---

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