---
title: "Create personal scheduling link"
method: POST
path: "/v1/links"
tags: ["Scheduling Links"]
---

# Create personal scheduling link

`POST /v1/links`

## Request

- Base URL: `https://api.savvycal.com`
- URL: `https://api.savvycal.com/v1/links`
- Auth: one of:
  - OAuth 2
    - Authorization code: `/oauth/authorize`
    - Token URL: `/oauth/token`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/savvycal/apis/savvycal-meetings-api/docs/v1/links/post.ts> (a function with typed inputs; its response is checked against the schema)

Creates the link in the current user's personal scope.

## Request body

- CreateLinkRequest
  - `description` string, nullable: The short description visible on the scheduling link.
  - `name` string, required
  - `private_name` string, nullable: The private name of the link (not visible to schedulers).
  - `slug` string: The URL slug for the link. Letters, numbers, and dashes only, and unique within the scope. A random slug is generated when omitted.
  - `type` 'recurring' | 'single': Either `recurring` for Multi-Use links, or `single` for Single-Use links.

## Response `201`

Created

- SingleLinkResponse
  - `default_duration` integer, required: Default duration in minutes
  - `description` string: Link description, as HTML. Empty when the link has no description.
  - `durations` integer[], required: Durations in minutes
  - `fields` LinkField[], required
    - `id` string, required
    - `is_required` boolean, required
    - `label` string, required
    - `options` FieldOption[], required: The choices for a `checkboxes`, `radios`, or `select` field. Empty for other field types.
      - `id` string, required
      - `value` string, required
    - `type` 'short_text' | 'long_text' | 'checkboxes' | 'radios' | 'select' | 'url' | 'hidden', required
  - `id` string, required
  - `increment` integer, required: Minutes between slot start times
  - `name` string, required: Public link name
  - `private_name` string, nullable: Private link name. `null` when the current user can't edit the link or the link has no private name.
  - `scope` ScopePreview: Preview of a scope/team
    - `id` string, required
    - `name` string, required
    - `slug` string, required
  - `slug` string, required
  - `state` 'active' | 'pending' | 'disabled' | 'archived' | 'deleted', required

## Other responses

- `401`: Unauthorized
- `404`: The current user can't create links in their personal scope
- `422`: Unprocessable Entity

---

[API](https://skmtc.dev/savvycal/apis/savvycal-meetings-api.md) - [All operations](https://skmtc.dev/savvycal/apis/savvycal-meetings-api/llms.txt) - [OpenAPI document](https://skmtc.dev/savvycal/apis/savvycal-meetings-api/revisions/398985d699a3?raw)
