---
title: "Ingest a meeting from any source"
method: POST
path: "/user-provided-meeting"
tags: ["Meetings"]
---

# Ingest a meeting from any source

`POST /user-provided-meeting`

## Request

- Base URL: `https://receiver.momentum.io`
- URL: `https://receiver.momentum.io/user-provided-meeting`
- Auth: API key in header `X-API-Key`
- TypeScript: <https://skmtc.dev/momentum/apis/momentum-api/docs/user-provided-meeting/post.ts> (a function with typed inputs; its response is checked against the schema)

Ingests a meeting and optional transcript from any source into the Momentum system.

## Request body

- UserProvidedMeetingBody
  - `meeting` UserProvidedMeeting, required
    - `id` string: Optional external meeting ID from the source system.
    - `title` string, required: Title of the meeting.
    - `callUrl` string, uri: URL to join the meeting.
    - `recordingUrl` string, uri: URL to the meeting recording.
    - `startTime` string, date-time, required: Start time of the meeting.
    - `endTime` string, date-time, required: End time of the meeting.
    - `host` object, required: Host of the meeting.
      - `name` string, required: Name of the host.
      - `email` string, email, required: Email of the host.
    - `attendees` MeetingAttendee[]: List of attendees for the meeting.
      - `email` string, email: Email address of the attendee.
      - `isInternal` boolean: Indicates if the attendee is internal to the organization.
      - `name` string: Name of the attendee.
    - `salesforceAccountId` string: Salesforce Account ID
    - `salesforceOpportunityId` string: Salesforce Opportunity ID
    - `transcript` UserProvidedTranscript
      - `segments` UserProvidedTranscriptSegment[], required
        - `speaker` object
          - `name` string
        - `text` string, required
        - `timestampSeconds` number, float, required
  - `processImportedMeeting` boolean, required: Whether to process the imported meeting.

## Response `200`

Meeting successfully created.

## Other responses

- `400`: Bad request.
- `401`: Unauthorized.
- `413`: Payload too large. The body size should not exceed 5 MB.
- `422`: Unprocessable entity due to semantic errors, such as invalid transcript format or inconsistent meeting details.
- `500`: Internal server error.

## Changes

- **2026-10-21** `8260dd8e6940`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/momentum/apis/momentum-api/changes/user-provided-meeting/post.md)

---

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