> Calendly developer docs. For page Markdown, append .md to any URL.
> Index: https://developer.calendly.com/llms.txt
> API catalog: https://developer.calendly.com/.well-known/api-catalog
> OpenAPI: https://developer.calendly.com/openapi/calendly-api.yaml
> OAuth authorization server: https://calendly.com/.well-known/oauth-authorization-server
> MCP protected resource: https://mcp.calendly.com/.well-known/oauth-protected-resource
> Scheduling MCP endpoint: https://mcp.calendly.com
> Docs search MCP: https://developer.calendly.com/_mcp/server

# Update Share

PATCH https://api.calendly.com/shares/{uuid}
Content-Type: application/json

Update a specified Share. Only unbooked, active single-use shares can be updated.

Omitted fields are unchanged. Setting a field to `null` restores the parent event type's current value for that field only (for `contact`, `null` removes the contact). The parent event type is never modified.

> `shares:write`

Reference: https://developer.calendly.com/api-docs/calendly-api/shares/update-share

## Authentication

- `Authorization` header (bearer token, required) — OAuth 2.0
- `Authorization` header (bearer token, required) — Personal Access Token

## Request

### Path parameters

- `uuid` (string, required)

### Body (application/json)

This endpoint expects an object.

- `contact` (string, optional, nullable) — Contact URI to associate with the share. Set to null to remove the contact
- `name` (string, optional, nullable)
- `duration` (integer, optional, nullable)
- `duration_options` (list of integer, optional, nullable)
- `period_type` (enum, optional, nullable)
  - Allowed values: `available_moving`, `moving`, `fixed`, `unlimited`
- `start_date` (string, optional, nullable) — Format: `YYYY-MM-DD`
- `end_date` (string, optional, nullable) — Format: `YYYY-MM-DD`
- `max_booking_time` (integer, optional, nullable)
- `min_booking_time` (integer, optional, nullable)
- `hide_location` (boolean, optional, nullable)
- `location_configurations` (list of SharesUuidPatchRequestBodyContentApplicationJsonSchemaLocationConfigurationsItems, optional, nullable) — Replaces all existing location configurations
- `availability_rule` (SharesUuidPatchRequestBodyContentApplicationJsonSchemaAvailabilityRule, optional, nullable) — Replaces the existing availability rule

## Response

### 200

OK

- `resource` (Share, required)

## Errors

### 400 Bad Request Error

Request is not valid

- `title` (enum, required)
  - Allowed values: `Internal Server Error`
- `message` (enum, required)
  - Allowed values: `The server encountered an unexpected condition that prevented it from fulfilling the request.`
- `details` (list of ErrorResponseDetailsItem, optional)

### 401 Unauthorized Error

Cannot authenticate caller

- `title` (enum, required)
  - Allowed values: `Internal Server Error`
- `message` (enum, required)
  - Allowed values: `The server encountered an unexpected condition that prevented it from fulfilling the request.`
- `details` (list of ErrorResponseDetailsItem, optional)

### 403 Forbidden Error

Permission denied or insufficient scope

- `Update-shareRequestForbiddenError`
  - UpdateShareRequestForbiddenError0
  - InsufficientScopeError: InsufficientScopeError

### 404 Not Found Error

Requested resource not found

- `title` (enum, required)
  - Allowed values: `Internal Server Error`
- `message` (enum, required)
  - Allowed values: `The server encountered an unexpected condition that prevented it from fulfilling the request.`
- `details` (list of ErrorResponseDetailsItem, optional)

### 409 Conflict Error

Request cannot be processed due to state conflict

- `title` (enum, required)
  - Allowed values: `Internal Server Error`
- `message` (enum, required)
  - Allowed values: `The server encountered an unexpected condition that prevented it from fulfilling the request.`
- `details` (list of SharesUuidPatchResponsesContentApplicationJsonSchemaDetailsItems, optional)

### 429 Too Many Requests Error

Too Many Requests

- `title` (enum, required)
  - Allowed values: `Internal Server Error`
- `message` (enum, required)
  - Allowed values: `The server encountered an unexpected condition that prevented it from fulfilling the request.`
- `details` (list of ErrorResponseDetailsItem, optional)

### 500 Internal Server Error

An error has occurred on the server

- `title` (enum, required)
  - Allowed values: `Internal Server Error`
- `message` (enum, required)
  - Allowed values: `The server encountered an unexpected condition that prevented it from fulfilling the request.`
- `details` (list of ErrorResponseDetailsItem, optional)

## Types

### SharesUuidPatchRequestBodyContentApplicationJsonSchemaLocationConfigurationsItems

- `kind` (enum, required)
  - Allowed values: `physical`, `ask_invitee`, `custom`, `outbound_call`, `inbound_call`, `google_conference`, `gotomeeting_conference`, `microsoft_teams_conference`, `zoom_conference`
- `location` (string, optional, nullable)
- `additional_info` (string, optional, nullable)
- `phone_number` (string, optional, nullable)
- `position` (integer, optional)

### SharesUuidPatchRequestBodyContentApplicationJsonSchemaAvailabilityRule

Replaces the existing availability rule

- `rules` (list of SharesUuidPatchRequestBodyContentApplicationJsonSchemaAvailabilityRuleRulesItems, required)
- `timezone` (string, required)

### Share

- `uri` (string, required) — The canonical URI of the share.
- `contact` (string, required, nullable) — The URI of the contact that the share is for. `null` if the share has no contact.
- `created_at` (string, required) — The time at which the share was created.
- `status` (enum, required) — The status of the share: - `active`: invitees can book with the share. - `booked`: an invitee booked with the share. - `expired`: the share expired without a booking.
  - Allowed values: `active`, `booked`, `expired`
- `scheduling_links` (list of ShareSchedulingLinksItems, required) — The scheduling links for the share. The array is empty when the share has no scheduling link.
- `share_override` (ShareShareOverride, required) — The effective scheduling settings for bookings with this share. Each field is the value that applies when an invitee books. When the share does not override a setting, the value is the parent Event Type value.

### ErrorResponseDetailsItem

- `message` (string, required)
- `parameter` (string, optional)
- `code` (string, optional)

### UpdateShareRequestForbiddenError0

Error Object

- `title` (enum, required)
  - Allowed values: `Permission Denied`
- `message` (enum, required)
  - Allowed values: `You do not have permission to access this resource.`, `You do not have permission`
- `details` (list of ErrorResponseDetailsItem, optional)

### InsufficientScopeError

Caller does not have required oauth scopes

- `title` (enum, required)
  - Allowed values: `Insufficient scope`
- `message` (enum, required)
  - Allowed values: `This operation requires the scopes listed in the 'required_scopes' array.`
- `required_scopes` (list of string, required)

### SharesUuidPatchResponsesContentApplicationJsonSchemaDetailsItems

- `message` (string, required)
- `parameter` (string, optional)
- `code` (string, optional)

### SharesUuidPatchRequestBodyContentApplicationJsonSchemaAvailabilityRuleRulesItems

- `type` (enum, required)
  - Allowed values: `wday`, `date`
- `wday` (enum, optional)
  - Allowed values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`
- `date` (string, optional) — Format: `YYYY-MM-DD`
- `intervals` (list of SharesUuidPatchRequestBodyContentApplicationJsonSchemaAvailabilityRuleRulesItemsIntervalsItems, optional)

### ShareSchedulingLinksItems

- `booking_url` (string, required) — Scheduling link url
- `owner` (string, optional) — A link to the resource that owns this Scheduling Link (currently, this is always an Event Type)
- `owner_type` (enum, optional) — Resource type (currently, this is always EventType)
  - Allowed values: `EventType`

### ShareShareOverride

The effective scheduling settings for bookings with this share. Each field is the value that applies when an invitee books. When the share does not override a setting, the value is the parent Event Type value.

- `name` (string, optional) — The event name that invitees see.
- `duration` (integer, optional) — The default event duration, in minutes.
- `duration_options` (list of integer, optional) — The event durations, in minutes, that invitees can select. The array is empty when the share does not offer multiple durations.
- `period_type` (enum, optional) — How the date range for bookings is calculated: - `fixed`: invitees can book only between `start_date` and `end_date`. - `moving`: invitees can book within a rolling window. Use `max_booking_time` to set the length of the window in minutes. Every calendar day counts toward the window. - `available_moving`: invitees can book within a rolling window. Use `max_booking_time` to set the length of the window in minutes. Only Monday through Friday count toward the window; weekends are excluded. - `unlimited`: invitees can book with no date range limit.
  - Allowed values: `available_moving`, `moving`, `fixed`, `unlimited`
- `start_date` (string, optional, nullable) — The first date that invitees can book when `period_type` is `fixed`. Format: `YYYY-MM-DD` `null` when `period_type` is not `fixed`.
- `end_date` (string, optional, nullable) — The last date that invitees can book when `period_type` is `fixed`. Format: `YYYY-MM-DD` `null` when `period_type` is not `fixed`.
- `max_booking_time` (integer, optional, nullable) — How far in the future invitees can book, in minutes. Applies when `period_type` is `moving` or `available_moving`. `null` when the effective booking window has no rolling limit.
- `min_booking_time` (integer, optional, nullable) — The minimum notice that invitees must give before the start of an event, in seconds. `null` when no minimum notice is configured.
- `hide_location` (boolean, optional, nullable) — Whether the location is hidden until the invitee books. This setting applies only when the share has one custom location. When the share does not override this setting, the value is the Event Type value.
- `location_configurations` (list of ShareShareOverrideLocationConfigurationsItems, optional) — The meeting locations for the share. The array is empty when no custom locations apply to the share.
- `availability_rule` (ShareShareOverrideAvailabilityRule, optional) — The effective availability rules for the share, including rules from the parent Event Type when the share does not define its own.

### SharesUuidPatchRequestBodyContentApplicationJsonSchemaAvailabilityRuleRulesItemsIntervalsItems

- `from` (string, optional) — Format: `"hh:mm"`
- `to` (string, optional) — Format: `"hh:mm"`

### ShareShareOverrideLocationConfigurationsItems

- `location` (string, optional, nullable) — The location value. Returned for `physical`, `custom`, and `ask_invitee` locations when a value is set.
- `additional_info` (string, optional, nullable) — More information about the location. Returned for `physical` and `inbound_call` locations when a value is set.
- `phone_number` (string, optional, nullable) — The phone number that invitees call. Returned for `inbound_call` locations.
- `position` (integer, optional) — The sort order of this location in the list.
- `kind` (enum, optional) — The type of location: - `physical`: an in-person location. - `ask_invitee`: the invitee provides the location. - `custom`: a custom location label. - `outbound_call`: the host calls the invitee. - `inbound_call`: the invitee calls the host. - `google_conference`: Google Meet. - `gotomeeting_conference`: GoTo Meeting. - `microsoft_teams_conference`: Microsoft Teams. - `zoom_conference`: Zoom.
  - Allowed values: `physical`, `ask_invitee`, `custom`, `outbound_call`, `inbound_call`, `google_conference`, `gotomeeting_conference`, `microsoft_teams_conference`, `zoom_conference`

### ShareShareOverrideAvailabilityRule

The effective availability rules for the share, including rules from the parent Event Type when the share does not define its own.

- `rules` (list of ShareShareOverrideAvailabilityRuleRulesItems, required) — The availability rules.
- `timezone` (string, required) — The time zone of the availability rules.

### ShareShareOverrideAvailabilityRuleRulesItems

- `type` (enum, required) — The rule type. A `wday` rule applies to a day of the week. A `date` rule applies to one date.
  - Allowed values: `wday`, `date`
- `intervals` (list of ShareShareOverrideAvailabilityRuleRulesItemsIntervalsItems, required) — The time ranges when invitees can book. An empty array means that no times are available.
- `wday` (enum, optional) — The day of the week. Returned for `wday` rules.
  - Allowed values: `sunday`, `monday`, `tuesday`, `wednesday`, `thursday`, `friday`, `saturday`
- `date` (string, optional) — The date. Returned for `date` rules. Format: `YYYY-MM-DD`

### ShareShareOverrideAvailabilityRuleRulesItemsIntervalsItems

- `from` (string, required) — The start of the time range. Format: `"hh:mm"`
- `to` (string, required) — The end of the time range. Format: `"hh:mm"`

## Examples

**Request**

```json
{}
```

**Response**

```json
{
  "resource": {
    "uri": "https://api.calendly.com/shares/AAAAAAAAAAAAAAAA",
    "contact": "https://api.calendly.com/contacts/CCCCCCCCCCCCCCCC",
    "created_at": "2019-01-02T03:04:05.678123Z",
    "status": "active",
    "scheduling_links": [
      {
        "booking_url": "https://calendly.com/d/abcd-brv8/15-minute-meeting",
        "owner": "https://api.calendly.com/event_types/AAAAAAAAAAAAAAAA",
        "owner_type": "EventType"
      }
    ],
    "share_override": {
      "name": "15 Minute Meeting",
      "duration": 15,
      "duration_options": [
        1,
        13,
        15,
        720
      ],
      "period_type": "fixed",
      "start_date": "2019-01-02",
      "end_date": "2019-01-03",
      "max_booking_time": 300,
      "min_booking_time": 14400,
      "hide_location": true,
      "location_configurations": [
        {
          "location": "123 Abc St.",
          "additional_info": "Example additional info",
          "phone_number": "+1 888-888-8888",
          "position": 0,
          "kind": "physical"
        }
      ],
      "availability_rule": {
        "rules": [
          {
            "type": "wday",
            "intervals": [
              {
                "from": "07:00",
                "to": "11:00"
              }
            ],
            "wday": "friday"
          }
        ],
        "timezone": "America/New_York"
      }
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.calendly.com/shares/uuid"

payload = {}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.patch(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.calendly.com/shares/uuid';
const options = {
  method: 'PATCH',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.calendly.com/shares/uuid"

	payload := strings.NewReader("{}")

	req, _ := http.NewRequest("PATCH", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.calendly.com/shares/uuid")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.patch("https://api.calendly.com/shares/uuid")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PATCH', 'https://api.calendly.com/shares/uuid', [
  'body' => '{}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.calendly.com/shares/uuid");
var request = new RestRequest(Method.PATCH);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.calendly.com/shares/uuid")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PATCH"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```