> ## Documentation Index
> Fetch the complete documentation index at: https://www.myhamlet.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a meeting's transcript

> Returns metadata plus a short-lived (1-hour) presigned S3 URL to download the meeting's transcript as a JSONL file (one utterance per line, no embeddings). Returns 404 if the meeting does not exist, your API key is not entitled to it, or it has no built transcript artifact (`has_transcript` on the meeting list tells you in advance). The link is never broken: a 200 always carries a valid, downloadable URL.



## OpenAPI

````yaml /openapi.json get /v1/meetings/{uuid}/transcript
openapi: 3.1.0
info:
  title: Hamlet Public API
  version: 0.1.0
  description: >-
    Public API for programmatic access to Hamlet civic intelligence data:
    government meetings, transcripts, and related records from local
    governments.
servers:
  - url: https://api.myhamlet.com
    description: Production
security: []
paths:
  /v1/meetings/{uuid}/transcript:
    get:
      tags:
        - Meetings
      summary: Get a meeting's transcript
      description: >-
        Returns metadata plus a short-lived (1-hour) presigned S3 URL to
        download the meeting's transcript as a JSONL file (one utterance per
        line, no embeddings). Returns 404 if the meeting does not exist, your
        API key is not entitled to it, or it has no built transcript artifact
        (`has_transcript` on the meeting list tells you in advance). The link is
        never broken: a 200 always carries a valid, downloadable URL.
      parameters:
        - schema:
            type: string
            format: uuid
            description: The meeting's public uuid.
            example: 9a1c2b3d-4e5f-6071-8293-a4b5c6d7e8f9
          required: true
          description: The meeting's public uuid.
          name: uuid
          in: path
      responses:
        '200':
          description: Transcript metadata with a 1-hour presigned download URL.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Transcript'
        '400':
          description: Invalid uuid.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            The meeting does not exist, is not entitled to this API key, or has
            no transcript.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    Transcript:
      type: object
      properties:
        uuid:
          type: string
          description: The transcript's public identifier.
          example: d8e1f2a3-4b5c-6d7e-8f90-1a2b3c4d5e6f
        meeting_uuid:
          type: string
          description: The meeting's public identifier; matches the path.
          example: 9a1c...
        format:
          type: string
          enum:
            - jsonl
          description: >-
            The downloaded artifact's format. Always `jsonl` (one utterance
            object per line).
          example: jsonl
        download_url:
          type: string
          description: >-
            Presigned S3 URL for the JSONL transcript, valid 1 hour. Download it
            before it expires.
          example: >-
            https://hamlet-transcripts-prod.s3.us-west-1.amazonaws.com/…?X-Amz-Signature=…
        url_expires_at:
          type: string
          description: ISO-8601 UTC timestamp when `download_url` expires.
          example: '2026-06-22T15:30:00.000Z'
        generated_at:
          type: string
          description: ISO-8601 UTC timestamp for when the transcript artifact was built.
          example: '2026-05-22T09:20:00.000Z'
      required:
        - uuid
        - meeting_uuid
        - format
        - download_url
        - url_expires_at
        - generated_at
    Error:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              example: not_found
            message:
              type: string
              example: The requested resource was not found.
          required:
            - code
            - message
      required:
        - error
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````