API ReferenceScheduling links

Duplicate a scheduling link

Create a copy of an existing scheduling link.

POST
/v1/links/{link_id}/duplicate
AuthorizationBearer <token>

OAuth 2.0 authorization code flow

In: header

Path Parameters

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/v1/links/link_01J5KC2G3MHPCECSQ6KM6FMDPC/duplicate"
{  "default_duration": 30,  "description": "A brief meeting to discuss your needs",  "durations": [    15,    30,    45  ],  "fields": [    {      "id": "field_123",      "is_required": true,      "label": "Company",      "options": [],      "type": "short_text"    }  ],  "id": "link_01J5KC2G3MHPCECSQ6KM6FMDPC",  "increment": 15,  "name": "30 Minute Meeting",  "private_name": "Quick sync with prospects",  "scope": {    "id": "scope_01J5KC4R7NHQFGT8V2WD9Y8H6X",    "name": "Sales Team",    "slug": "sales"  },  "slug": "30min",  "state": "active"}

Update a scheduling link PATCH

Update an existing scheduling link.

Get available time slots GET

Get available time slots for booking on a scheduling link. If the link organizer has configured multiple durations, we'll return all possible time slots for each duration. For example, if the organizer allows schedulers to book either 30 or 60 minutes, then you may see slots that start at the same time (or overlap) with different durations: ```javascript [ { start_at: "2021-06-01T00:00:00Z", end_at: "2021-06-01T00:30:00Z", duration: 30, rank: 1 }, { start_at: "2021-06-01T00:00:00Z", end_at: "2021-06-01T01:00:00Z", duration: 60, rank: 1 } ] ``` If the organizer is using ranked availability, then the response may include slots with different `rank` values: ```javascript [ // A slot with "first" preference { start_at: "2021-06-01T00:00:00Z", end_at: "2021-06-01T00:30:00Z", duration: 30, rank: 1 }, // A slot with "second" preference { start_at: "2021-06-01T03:00:00Z", end_at: "2021-06-01T03:30:00Z", duration: 60, rank: 2 } ] ``` Slots with rank `1` are those the organizer prefers the most. Slots with rank `2` (and higher) will include all the slot times from lower ranks, plus additional times available in that rank. This means if you want to get the "expanded" availability (e.g. up to rank 2), you simply need to filter the list for slots where `rank === 2` (not where `rank === 1 || rank === 2`). Here's some JavaScript pseudo-code to demonstrate: ```javascript const slots = await fetchSlots(); // Includes just the rank 1 times const preferredAvailability = slots.filter(({ rank } => rank === 1)); // Includes all rank 1 AND rank 2 times const expandedAvailability = slots.filter(({ rank } => rank === 2)); // Includes all rank 1, rank 2 and rank 3 times const moreExpandedAvailability = slots.filter(({ rank } => rank === 3)); ```