GET /api/v1/meetings//summary
Returns the post-meeting cost summary for a single meeting, identified by MeetCost’s internal meeting ID. The response is redacted according to the caller’s role and the org’s disclosure policy. Access control: Callers who attended or organised the meeting see it at their normal role. A caller who was neither an attendee nor the organiser must have at least theteam_lead role to retrieve the summary — otherwise the server returns 403 Forbidden.
Path parameters
string
required
MeetCost’s internal meeting ID (returned as
meeting_id in all meeting summary responses).Response body
string
MeetCost’s internal meeting ID.
string
The platform that hosted the meeting:
google, microsoft, or zoom.string | null
Meeting title from the calendar event, if available.
string | null
Email address of the meeting organiser.
string | null
ISO 8601 datetime of actual start (not scheduled start).
number | null
Actual meeting duration in minutes (not scheduled duration).
object
Cost result, subject to disclosure policy. Same structure as the
cost object in estimate responses — see POST /api/v1/estimate for field descriptions.string | null
The scheduling-time estimate total, if one was captured. Allows comparison of what the organiser expected versus what the meeting actually cost.
string | null
Difference between
cost.total and estimated_total, as a signed decimal string. Positive means the meeting cost more than estimated; negative means it cost less.number | null
Aggregate minutes of late joins across all participants. Only present when
cost.visible is true.string | null
Annual run-rate for recurring meetings, or
null for one-off meetings.string | null
Explanation when some participants were priced at the fallback rate. Same semantics as on estimate responses.
Response example
GET /api/v1/meetings/by-provider///summary
Same as the endpoint above, but addressed by the provider’s own meeting ID rather than MeetCost’s internal ID. This is typically more convenient for add-in clients, which receive the provider’s ID from the calendar event directly.Path parameters
string
required
The meeting platform:
google, microsoft, or zoom.string
required
The provider’s meeting identifier — the UUID or numeric ID from the calendar event or meeting object. Maximum 200 characters.
Request example
GET /api/v1/meetings/mine
Returns a list of meetings the authenticated caller organised, ordered most-recent first. Applies the organiser disclosure rules (the caller always sees their own meeting totals, subject to org policy).Query parameters
integer
default:"20"
Maximum number of meetings to return. Capped at 100.
Response
An array of meeting summary objects, each with the same structure as theGET /api/v1/meetings/{meeting_id}/summary response.
Request example
POST /api/v1/meetings/ingest
Manually record a completed meeting from a platform that MeetCost has no built-in collector for. Requires admin role or a service token. Idempotent on(provider, provider_meeting_id): Submitting the same meeting twice writes it only once. This is intentional — provider webhook systems and polling collectors retry on failure, and a retry must not double-count a meeting in the monthly report.
Webhook deliveries from Zoom and Microsoft Graph go through the
/webhooks/... endpoints instead, where the provider’s signature is verified first. Use /meetings/ingest for platforms without a webhook, or for one-off manual imports.Request body
string
required
Platform identifier for this meeting, e.g.
"webex", "bluejeans", "custom". Maximum 20 characters.string
required
The provider’s own meeting identifier. Used for idempotency checks. Maximum 200 characters.
array
required
List of attendees and their participation details.
string
Meeting title. Optional.
string
Email address of the meeting organiser. Optional.
string
Recurring series identifier from the provider, if applicable. Used to group meetings in reports.
string
default:"one_off"
Meeting cadence. Same values as the estimate endpoint:
one_off, daily, weekdaily, weekly, biweekly, monthly, quarterly.string
ISO 8601 datetime of the actual meeting start.
string
ISO 8601 datetime of the actual meeting end.
number
Scheduled duration in minutes. Stored for comparison against actual duration.
Request example
Response
Returns a full meeting summary response object (same structure asGET /api/v1/meetings/{meeting_id}/summary). After ingestion, the meeting is costed immediately and the summary is dispatched to any configured notification channels.