---
title: "Read Attachment"
method: POST
path: "/v2/attachments/read"
tags: ["external", "external-v2"]
---

# Read Attachment

`POST /v2/attachments/read`

Read structured content for a single attachment by kind and ID.
Use `attachment_kind` and `attachment_id` returned in note attachment metadata.

## Request body

- ReadAttachmentRequestSchema
  - `attachment_id` string, uuid, required — UUID of the attachment to read. For note attachment metadata returned by `GET /v2/notes/{note_id}`, pass the `attachment_id` value directly.
  - `attachment_kind` 'pdf' | 'image' | 'audio_recording' | 'calendar_event' | 'email', required
  - `content_limit` integer, nullable — Maximum content characters to return. Defaults to 10,000 and is capped at 20,000.
  - `content_offset` integer — Zero-based character offset for audio, calendar, and email content.
  - `page_limit` integer, nullable — Maximum number of PDF pages to return. Defaults to 5 and is capped at 20.
  - `page_offset` integer — Zero-based page offset for PDF attachments.

## Response `200`

OK

- ReadAttachmentResponseSchema
  - `attachment_id` string, uuid, required
  - `attachment_kind` 'pdf' | 'image' | 'audio_recording' | 'calendar_event' | 'email', required
  - `audio_recording` AudioRecordingAttachmentResponseSchema
    - `associated_note_id` string, uuid, nullable
    - `content_limit` integer
    - `content_offset` integer
    - `created_at` string, date-time, nullable
    - `duration_seconds` integer, nullable
    - `has_more` boolean
    - `transcript` string, nullable — Transcript content slice for an audio recording attachment. The transcript is returned with available speaker labels, including participant names, generic diarization labels such as `[Speaker 1]`, and app channel labels such as `[Speaker]` and `[Other Speakers]`. Participant names are included only when available; many transcripts use generic diarization labels or app channel labels instead. Generic labels are speaker grouping context, not verified participant identity. Empty string means the recording exists but transcript data is not available for this slice.
    - `transcript_total_characters` integer — Total character count for the formatted transcript before content slicing. Speaker labels, when present, are included in this count.
    - `updated_at` string, date-time, nullable
  - `calendar_event` CalendarEventAttachmentResponseSchema
    - `attendees` object[]
    - `calendar_name` string, nullable
    - `content` string, required
    - `content_limit` integer
    - `content_offset` integer
    - `content_total_characters` integer
    - `created_at` string, date-time, required
    - `description` string, nullable
    - `end_time` string, date-time, nullable
    - `has_more` boolean
    - `is_all_day` boolean, required
    - `meet_link` string, nullable
    - `self_response_status` string, nullable
    - `start_time` string, date-time, nullable
    - `title` string, nullable
    - `updated_at` string, date-time, required
  - `email` EmailAttachmentResponseSchema
    - `bcc_email_addresses` string[]
    - `cc_email_addresses` string[]
    - `content` string, required
    - `content_limit` integer
    - `content_offset` integer
    - `content_total_characters` integer
    - `created_at` string, date-time, required
    - `has_more` boolean
    - `internal_date` string, date-time, required
    - `message_id` string, required
    - `sender` string, nullable
    - `snippet` string, nullable
    - `subject` string, nullable
    - `thread_id` string, required
    - `to_email_addresses` string[]
    - `updated_at` string, date-time, required
  - `image` AttachmentImageResponseSchema
    - `filename` string, nullable
    - `image_type` string, nullable
    - `key_entities` string[]
    - `mime_type` string, nullable
    - `ocr_text` string, nullable
    - `suggested_search` string, nullable
    - `summary` string, nullable
    - `visual_description` string, nullable
  - `pdf` AttachmentPdfResponseSchema
    - `filename` string, nullable
    - `has_more` boolean
    - `mime_type` string, nullable
    - `page_count` integer, nullable
    - `page_limit` integer
    - `page_offset` integer
    - `pages` AttachmentPdfPageResponseSchema[]
      - `key_entities` string[]
      - `page_number` integer, required
      - `plain_text` string, nullable
      - `suggested_search` string, nullable
      - `summary` string, nullable
    - `suggested_search` string, nullable
    - `summary` string, nullable
  - `request_id` string, required

---

[API](https://skmtc.net/mem/apis/mem-api.md) · [All operations](https://skmtc.net/mem/apis/mem-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mem/mem-api/revisions/4023cb07f31f/schema)
