## Send a voice memo to a chat `client.Chats.SendVoicememo(ctx, chatID, body) (*ChatSendVoicememoResponse, error)` **post** `/v3/chats/{chatId}/voicememo` Send an audio file as an **iMessage voice memo bubble** to all participants in a chat. Voice memos appear with iMessage's native inline playback UI, unlike regular audio attachments sent via media parts which appear as downloadable files. **Supported audio formats:** - MP3 (audio/mpeg) - M4A (audio/x-m4a, audio/mp4) - AAC (audio/aac) - CAF (audio/x-caf) - Core Audio Format - WAV (audio/wav) - AIFF (audio/aiff, audio/x-aiff) - AMR (audio/amr) ### Parameters - `chatID string` - `body ChatSendVoicememoParams` - `AttachmentID param.Field[string]` Reference to a voice memo file pre-uploaded via `POST /v3/attachments`. The file is already stored, so sends using this ID skip the download step. Either `voice_memo_url` or `attachment_id` must be provided, but not both. - `VoiceMemoURL param.Field[string]` URL of the voice memo audio file. Must be a publicly accessible HTTPS URL. Either `voice_memo_url` or `attachment_id` must be provided, but not both. ### Returns - `type ChatSendVoicememoResponse struct{…}` Response for sending a voice memo to a chat - `VoiceMemo ChatSendVoicememoResponseVoiceMemo` - `ID string` Message identifier - `Chat ChatSendVoicememoResponseVoiceMemoChat` - `ID string` Chat identifier - `Handles []ChatHandle` Chat participants - `ID string` Unique identifier for this handle - `Handle string` Phone number (E.164) or email address of the participant - `JoinedAt Time` When this participant joined the chat - `Service ServiceType` Messaging service type - `const ServiceTypeiMessage ServiceType = "iMessage"` - `const ServiceTypeSMS ServiceType = "SMS"` - `const ServiceTypeRCS ServiceType = "RCS"` - `IsMe bool` Whether this handle belongs to the sender (your phone number) - `LeftAt Time` When they left (if applicable) - `Status ChatHandleStatus` Participant status - `const ChatHandleStatusActive ChatHandleStatus = "active"` - `const ChatHandleStatusLeft ChatHandleStatus = "left"` - `const ChatHandleStatusRemoved ChatHandleStatus = "removed"` - `IsActive bool` Whether the chat is active - `IsGroup bool` Whether this is a group chat - `Service ServiceType` Messaging service type - `CreatedAt Time` When the voice memo was created - `From string` Sender phone number - `Status string` Current delivery status - `To []string` Recipient handles (phone numbers or email addresses) - `VoiceMemo ChatSendVoicememoResponseVoiceMemoVoiceMemo` - `ID string` Attachment identifier - `Filename string` Original filename - `MimeType string` Audio MIME type - `SizeBytes int64` File size in bytes - `URL string` CDN URL for downloading the voice memo - `DurationMs int64` Duration in milliseconds - `Service ServiceType` Messaging service type ### Example ```go package main import ( "context" "fmt" "github.com/linq-team/linq-go" "github.com/linq-team/linq-go/option" ) func main() { client := linqgo.NewClient( option.WithAPIKey("My API Key"), ) response, err := client.Chats.SendVoicememo( context.TODO(), "f19ee7b8-8533-4c5c-83ec-4ef8d6d1ddbd", linqgo.ChatSendVoicememoParams{ VoiceMemoURL: linqgo.String("https://example.com/voice-memo.m4a"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", response.VoiceMemo) } ``` #### Response ```json { "voice_memo": { "id": "69a37c7d-af4f-4b5e-af42-e28e98ce873a", "chat": { "id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e", "handles": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "handle": "+15551234567", "joined_at": "2025-05-21T15:30:00.000-05:00", "service": "iMessage", "is_me": false, "left_at": "2019-12-27T18:11:19.117Z", "status": "active" } ], "is_active": true, "is_group": true, "service": "iMessage" }, "created_at": "2019-12-27T18:11:19.117Z", "from": "+12052535597", "status": "queued", "to": [ "+12052532136" ], "voice_memo": { "id": "550e8400-e29b-41d4-a716-446655440000", "filename": "voice-memo.m4a", "mime_type": "audio/x-m4a", "size_bytes": 524288, "url": "https://cdn.linqapp.com/voice-memos/abc123.m4a", "duration_ms": 15000 }, "service": "iMessage" } } ```