---
title: Create and maintain meeting records | Lightfield
description: Log a past meeting, update allowed fields, and delete or restore it with the Meetings API.
---

Create a manual record for a meeting that already happened, or maintain a meeting synced into Lightfield. This does not schedule a calendar event or invite a recording bot. Use [Meetings](/help/meetings/index.md) for recording and summaries, and the [transcript upload guide](/using-the-api/uploading-meeting-transcripts/index.md) to attach a transcript.

## Log a past meeting

Grant `meetings:create` and `meetings:read`. [Create a meeting](/api/resources/meeting/methods/create/index.md) requires a title and start/end times in the past:

Terminal window

```
curl https://api.lightfield.app/v1/meetings \
  -H "Authorization: Bearer $LIGHTFIELD_API_KEY" \
  -H "Lightfield-Version: 2026-03-01" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: northwind-renewal-meeting-001" \
  -d '{"fields":{"$title":"Northwind renewal call","$startDate":"2026-10-01T15:00:00Z","$endDate":"2026-10-01T15:30:00Z","$attendeeEmails":["ada@northwind.example"]}}'
```

Save `id` and inspect the returned fields and `accessLevel`. Use actual attendee addresses. Account and opportunity relationships are derived through the meeting’s contacts; do not write those derived relationships directly.

## Read and update a meeting

[Retrieve the meeting](/api/resources/meeting/methods/retrieve/index.md) to verify it immediately, or [list meetings](/api/resources/meeting/methods/list/index.md) with `limit` and `offset` to discover IDs. [Definitions](/api/resources/meeting/methods/definitions/index.md) describe the available fields; not every returned field is writable.

Terminal window

```
curl "https://api.lightfield.app/v1/meetings/$MEETING_ID" \
  -H "Authorization: Bearer $LIGHTFIELD_API_KEY" \
  -H "Lightfield-Version: 2026-03-01"


curl "https://api.lightfield.app/v1/meetings?limit=20&offset=0" \
  -H "Authorization: Bearer $LIGHTFIELD_API_KEY" \
  -H "Lightfield-Version: 2026-03-01"
```

[Update](/api/resources/meeting/methods/update/index.md) accepts `$privacySetting`, `$attendeeEmails`, `$meetingPrep`, `$postMeetingSummary` and the `$transcript.replace` relationship. Prep and summary edits are Markdown; regeneration as new activity arrives replaces your edit. `null` or an empty string clears them until regeneration. Attendee changes replace the whole list and require a meeting that has ended. Read the current list first and preserve attendees you still want.

Adding an address on a workspace blocklist or a teammate’s Do not track list hides the meeting after the next sync; an admin must remove the blocking entry to bring it back. Check the intended addresses before sending:

Terminal window

```
curl "https://api.lightfield.app/v1/meetings/$MEETING_ID" \
  -X POST \
  -H "Authorization: Bearer $LIGHTFIELD_API_KEY" \
  -H "Lightfield-Version: 2026-03-01" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: northwind-meeting-attendees-001" \
  -d '{"fields":{"$attendeeEmails":["ada@northwind.example","ben@northwind.example"]}}'
```

This needs `meetings:update` and meeting edit access. Check the returned attendee list and read-only manual-attendee fields. For changing transcripts, follow [Upload a meeting transcript](/using-the-api/uploading-meeting-transcripts/index.md) without changing privacy as a side effect.

## Delete and restore

[Delete](/api/resources/meeting/methods/delete/index.md) moves the meeting to trash. Only meeting participants or workspace admins with the required delete scope can do this. A second deletion returns 404, so re-read state before interpreting that result as an unknown original ID.

Terminal window

```
curl "https://api.lightfield.app/v1/meetings/$MEETING_ID" \
  -X DELETE \
  -H "Authorization: Bearer $LIGHTFIELD_API_KEY" \
  -H "Lightfield-Version: 2026-03-01"


curl "https://api.lightfield.app/v1/meetings/$MEETING_ID/restore" \
  -X POST \
  -H "Authorization: Bearer $LIGHTFIELD_API_KEY" \
  -H "Lightfield-Version: 2026-03-01"
```

[Restore](/api/resources/meeting/methods/restore/index.md) brings a trashed meeting back to active; an already-active meeting is unchanged. Find deleted IDs using the list endpoint with `status=trashed`, and retrieve the meeting after restoring it.

For 400, check past timestamps and the operation’s writable fields. For 403, check edit access as well as scopes. An absent transcript or redacted response requires the [transcript access checks](/using-the-api/retrieving-meeting-transcripts/index.md), not another upload or a broader privacy setting.
