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

# Voice Memos

> Send an audio file as a native iMessage voice memo, and read voice memos in messages and webhooks.

An `audio` part sends an audio file as a voice memo: the recipient gets the native iMessage audio message with the waveform player, not a file to download. Point it at an uploaded audio attachment or at a public HTTPS URL, exactly like a `media` part.

## Send a voice memo

```bash theme={null}
curl https://api.blujay.io/v1/chats/chat_abc123/messages \
  -H "Authorization: Bearer blu_your_api_key" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: welcome-memo-7731" \
  -d '{
    "message": {
      "parts": [
        { "type": "audio", "attachment_id": "att_abc123" }
      ]
    }
  }'
```

```json 202 Accepted theme={null}
{
  "status": "success",
  "data": {
    "chat_id": "chat_abc123",
    "message": {
      "id": "msg_jkl012",
      "direction": "outbound",
      "delivery_status": "accepted",
      "preferred_service": null,
      "service": null,
      "from": "+15555550100",
      "to": ["+15555550123"],
      "created_at": "2026-10-14T17:12:00.000Z",
      "parts": [
        { "type": "audio", "attachment_id": "att_abc123" }
      ]
    }
  },
  "trace_id": "trc_4b8e2d10c7a9",
  "timestamp": "2026-10-14T17:12:00.000Z"
}
```

* The file must be audio: M4A/AAC, MP3, WAV, CAF, FLAC, Ogg or WebM audio. An `attachment_id` that isn't an audio file returns `415` [`UNSUPPORTED_ATTACHMENT_TYPE`](https://docs.blujay.io/errors/unsupported-attachment-type); a URL that doesn't serve audio, or audio that can't be decoded, fails the message with that `failure_code`.
* Blujay stores and sends every voice memo as M4A (AAC). Other audio is converted into a copy the message owns; the part keeps your `attachment_id`, and your attachment stays as you uploaded it.
* An attachment that can't be decoded returns `400` [`VOICE_MEMO_UNREADABLE`](https://docs.blujay.io/errors/voice-memo-unreadable). If the conversion can't run right now, you get `503` [`VOICE_MEMO_PROCESSING_UNAVAILABLE`](https://docs.blujay.io/errors/voice-memo-processing-unavailable); retry with the same `Idempotency-Key`.
* An `audio` part must be the only part in the message. A voice memo with a caption or a second file returns `400` [`VALIDATION_ERROR`](https://docs.blujay.io/errors/validation-error); send the text as its own message.
* Voice memos go out over iMessage or RCS. `preferred_service: "SMS"`, or a group chat carried by SMS, returns `415` [`UNSUPPORTED_ATTACHMENT_TYPE`](https://docs.blujay.io/errors/unsupported-attachment-type). A direct message that can only reach the recipient by SMS fails with `failure_code` `UNSUPPORTED_ATTACHMENT_TYPE` and `failure.code` `unsupported_content`; Blujay never sends the audio as a plain file instead.
* Like any file, voice memos are rejected until the contact has replied (`400` [`PRE_REPLY_CONTENT_BLOCKED`](https://docs.blujay.io/errors/pre-reply-content-blocked)). They need a chat Blujay already knows the service of: a direct chat with no messages yet, or one whose service is SMS, returns `415` [`UNSUPPORTED_ATTACHMENT_TYPE`](https://docs.blujay.io/errors/unsupported-attachment-type), and a voice memo can't start a new group chat (`400` [`VALIDATION_ERROR`](https://docs.blujay.io/errors/validation-error)).
* The same upload and URL limits apply: 100 MiB for uploads, 10 MiB from a URL.

Message reads and message webhooks from version `2026-10-03` return the part as `type: "audio"` with the same `filename`, `content_type`, `size_bytes` and `download_url` fields as a media part. Those fields describe the M4A copy. Webhook version `2026-09-02` reports it as a `media` part, and earlier versions carry no parts. Voice memos you receive still arrive as audio `media` parts; see [Receive messages](https://docs.blujay.io/messaging/receive-messages.md).

To send an audio file as an ordinary attachment instead, use a `media` part.

## Voice memos in your own voice

Pair the [Blujay MCP server](https://docs.blujay.io/mcp-server.md) with [ElevenLabs' MCP server](https://elevenlabs.io/docs/agents-platform/operate/hosted-mcp) and an AI assistant can record a voice memo in your own cloned voice, then send it:

> "Leave Ava a voice memo in my voice saying I'm running 10 minutes late."

From code, generate the audio with any text-to-speech service, upload it, and send it as an `audio` part.

## Next steps

> [card] [Media](https://docs.blujay.io/messaging/media.md)
>
> Upload audio files and send other attachments.

> [card] [Sending rules](https://docs.blujay.io/messaging/sending-rules.md)
>
> What you can send before a contact replies.

> [card] [Receive messages](https://docs.blujay.io/messaging/receive-messages.md)
>
> How voice memos you receive arrive.

> [card] [Webhook versions](https://docs.blujay.io/webhooks/versions.md)
>
> How each version reports audio parts.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.