---
title: "Update a meeting (overwrite linked records)"
method: PUT
path: "/v2/meetings/{meeting_id}"
tags: ["Meetings"]
---

# Update a meeting (overwrite linked records)

`PUT /v2/meetings/{meeting_id}`

## Request

- Base URL: `https://api.attio.com`
- URL: `https://api.attio.com/v2/meetings/{meeting_id}`
- Auth: OAuth 2
  - Authorization code: `https://app.attio.com/authorize`
  - Token URL: `https://app.attio.com/oauth/token` scopes: `meeting:read-write`, `record_permission:read`

Replaces a meeting's linked records with the records supplied. Any record which is currently linked and is not in the request is unlinked, including records which Attio linked automatically from the meeting's participants. Passing an empty array unlinks every record. Use the `PATCH` endpoint to add linked records without removing the records which already exist.

No other meeting fields can be updated. Attio automatically links the meeting participants' companies to the meeting; this behavior is asynchronous, so a company which is linked after this request completes is not removed by it.

This endpoint is in beta. We will aim to avoid breaking changes, but small updates may be made as we roll out to more users.

Required scopes: `meeting:read-write`, `record_permission:read`.

Supported token levels: `workspace`, `user`.

## Path parameters

- `meeting_id` string, uuid, required: A UUID which identifies the meeting to update.

## Request body

- object
  - `data` object, required
    - `linked_records` object[], required
      - `object` string, required: The slug or UUID of the object that the record being linked belongs to.
      - `record_id` string, uuid, required: The UUID of the record being linked.

## Response `200`

Success

- object: Success
  - `data` Meeting, required
    - `id` object, required
      - `workspace_id` string, uuid, required: The ID of the workspace the meeting belongs to.
      - `meeting_id` string, uuid, required: The ID of the Attio meeting.
    - `title` string, required: The title of the meeting.
    - `description` string, required: The description of the meeting.
    - `is_all_day` boolean, required: Whether or not the meeting is an all day event. All day events may span multiple days.
    - `start` union, required
      - object
        - `datetime` string, required: If a non-all day event, a datetime representing when the meeting starts. Datetimes are formatted as UTC if no timezone is available. If a timezone is available, the datetime will offset using the specified timezone.
        - `timezone` string, nullable, required: The IANA timezone in which the meeting starts, if available.
      - object
        - `date` string, required: If an all day event, a date representing when the meeting starts.
    - `end` union, required
      - object
        - `datetime` string, required: A datetime representing when the meeting ends. All day meetings will return a date whereas non-all day meetings will return a datetime. Datetimes do not include timezone information; please refer to `timezone` for timezone information. Following iCalendar RFC 5545, the `end_at` property is exclusive, meaning that the meeting ends before the specified time, not at it. For example, a one day meeting on June 3rd would have an `end_at` of June 4th, not June 3rd; a one hour meeting starting at 14:00 would have an `end_at` of 15:00, not 14:00.
        - `timezone` string, nullable, required: The IANA timezone in which the meeting ends, if available.
      - object
        - `date` string, required: If an all day event, a date representing when the meeting ends.
    - `participants` object[], required
      - `status` 'accepted' | 'tentative' | 'declined' | 'pending', required: The status of the individual meeting participant.
      - `is_organizer` boolean, required: Whether or not the participant is the organizer of the meeting.
      - `email_address` string, nullable, required: The normalized email address of the meeting participant.
      - `name` string, nullable, required: The participant's name. This is only set when the name was explicitly provided when the participant was created. It is null for any participant identified by an email address — including workspace members and person records — whose display names are not resolved into this field.
    - `linked_records` object[], required: A list of records that are linked to the meeting. Participants with matching person records are automatically linked to the meeting but other records may also be linked explicitly.
      - `object_slug` string, required: The slug of the object the meeting linked record belongs to.
      - `object_id` string, uuid, required: The ID of the object the meeting linked record belongs to.
      - `record_id` string, uuid, required: The ID of the meeting linked record.
    - `created_at` string, required: Timestamp representing when the meeting was created.
    - `created_by_actor` object, required: The actor that created this meeting.
      - `id` string, nullable: An ID to identify the actor.
      - `type` 'api-token' | 'workspace-member' | 'system' | 'app', nullable: The type of actor. [Read more information on actor types here](/docs/actors).

## Other responses

- `400`: Bad Request
- `404`: Not Found

## Changes

- **2026-09-22** `61101003ebb5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/attio/apis/attio-api/changes/v2/meetings/:meeting_id/put.md)

---

[API](https://skmtc.dev/attio/apis/attio-api.md) - [All operations](https://skmtc.dev/attio/apis/attio-api/llms.txt) - [OpenAPI document](https://skmtc.dev/attio/apis/attio-api/revisions/7d2c7472b378?raw)
