Meetings

Get a meeting's results

Transcript, speakers, summary and media in one read. Each part has its own status: the transcript is ready before the summary. Media URLs are signed for one hour (media.expires_at); read the results again for fresh ones.

This is the one place a meeting's results are read, whichever way it was recorded.

get/meetings/{id}/results

Request

  • Base URL
    https://www.happyscribe.com/api/v1
  • Auth
    API key in header Authorization

Query parameters

include'words'

Extra parts to include. Off by default.

  • words: each segment's word timings, in transcript.segments[].words

Response

The results.

objectstring

Always meeting_results.

meeting_idstring

The meeting these results belong to.

status'processing' | 'ready' | 'failed' | 'none'

none until a recording produces it (and for good when nothing was recorded, or no summary for a failed transcript), processing while it is made, then ready or failed. Results never forecast: whether a recording will come is the meeting's phase, recordings and effective_policy.recording.

Example response

{
  "object": "meeting_results",
  "meeting_id": "mtg_01k6a2r9s8x7c2dvq3m5n6p4ab",
  "status": "ready",
  "transcript": {
    "status": "ready",
    "language": "en",
    "segments": [
      {
        "speaker_id": "spk_1",
        "start_seconds": 0,
        "end_seconds": 14.2,
        "text": "Morning all, shall we start with the renewal?",
        "words": [
          {
            "text": "Morning",
            "start_seconds": 0,
            "end_seconds": 0.42
          },
          {
            "text": "all,",
            "start_seconds": 0.42,
            "end_seconds": 0.7
          }
        ]
      },
      {
        "speaker_id": "spk_2",
        "start_seconds": 14.2,
        "end_seconds": 31.8,
        "text": "Yes. We're keen, but pricing needs to move."
      }
    ]
  },
  "speakers": [
    {
      "id": "spk_1",
      "label": "Marc",
      "name": "Marc",
      "email": "marc@gurusup.com",
      "member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab",
      "identified": true,
      "talk_time_seconds": 812.4
    },
    {
      "id": "spk_2",
      "label": "Speaker 2",
      "name": null,
      "email": null,
      "member_id": null,
      "identified": false,
      "talk_time_seconds": 640.1
    }
  ],
  "summary": {
    "status": "ready",
    "markdown": "## Renewal\n- Acme wants to renew",
    "sections": [
      {
        "heading": "Renewal",
        "text": null,
        "items": [
          "Acme wants to renew"
        ]
      }
    ],
    "action_items": [
      {
        "text": "Marc: send revised pricing",
        "assignee": {
          "name": "Marc",
          "email": "marc@gurusup.com",
          "member_id": "mem_01k69x9s8x7c2dvq3m5n6p4ab"
        }
      }
    ]
  },
  "media": {
    "status": "ready",
    "duration_seconds": 1834,
    "audio_url": "https://storage.happyscribe.com/signed-audio",
    "video_url": "https://storage.happyscribe.com/signed-video",
    "expires_at": "2026-09-29T09:46:10Z"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.