> ## 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.

# FAQ

> Quick answers to the questions developers ask most.

## Getting started

> **Is there a test mode or sandbox?**
>
> No. Every call acts on your real workspace and messages are delivered. Test by sending to your own phone. See [Test and live](/authentication.md#test-and-live).

> **How do I get an API key, or rotate it?**
>
> Workspace owners and admins find the key under **API** in the Blujay sidebar. A workspace has one key today. To rotate it, or if it leaks, email [support@blujay.io](mailto:support@blujay.io). See [Authentication](/authentication.md).

> **What does Free Plan, Dedicated or AI Agent let me do?**
>
> **Free Plan**: a shared number that can message up to 10 verified contacts, people who texted it first and were verified in the app; no group chats. **Dedicated**: your own number with full functionality. **AI Agent**: your own number that only replies to people who text it first, with no group chats. See [Plans](/plans.md).

> **Do API messages show up in Blujay?**
>
> Yes. Messages you send through the API appear in your team's inbox in Blujay like any other text, and replies land in the same chat. They also appear in CRMs you've connected to Blujay.

> **Where do I report a problem?**
>
> Email [support@blujay.io](mailto:support@blujay.io) with the `trace_id` from the response. See [Debugging](/debugging.md) and [Support](/support.md).

## Sending

> **Do I choose iMessage or SMS?**
>
> You don't have to. Leave out `preferred_service` (Auto) and Blujay uses iMessage when the person can receive it, and RCS or SMS when they can't. You can also check first or require a service. See [iMessage, RCS or SMS](/messaging/choosing-a-service.md).

> **Why does my second request fail?**
>
> Until a contact replies to your number, Blujay rejects a link, photo, file or contact card, and any text over 300 characters, with a `400`. At most 6 texts go out in a row without a response. These errors are never retryable: wait for the reply. See [Sending rules](/messaging/sending-rules.md).

> **Why was my message with a link rejected?**
>
> Until a contact replies to your number, Blujay rejects links with [`FIRST_MESSAGE_LINK_NOT_ALLOWED`](/errors/first-message-link-not-allowed) on a first message and [`PRE_REPLY_CONTENT_BLOCKED`](/errors/pre-reply-content-blocked) on follow-ups. Send a short text first, then send the link after they reply. Text that looks like a web address counts as a link. See [Sending rules](/messaging/sending-rules.md).

> **What counts as a reply?**
>
> A text or a reaction (such as a tapback) from the contact, or a message from them in a group chat. Calls don't count. Links, attachments and longer texts unlock once the contact replies to that specific number.

> **How do I avoid sending a message twice?**
>
> Send an `Idempotency-Key` header and reuse it on retries. See [Idempotency](/idempotency.md).

> **Can I send to group chats?**
>
> Yes, from a Dedicated number. Send to two or more phone numbers to start a group chat. In iMessage groups you can add and remove participants and rename the group. See [Group chats](/messaging/group-chats.md).

> **Can I edit or unsend a message?**
>
> Yes, for text-only iMessages your workspace sent: edit within 15 minutes, unsend within 2 minutes. See [Edit and unsend](/messaging/edit-and-unsend.md).

> **I got a 204 but no typing bubble showed. Why?**
>
> Typing is best effort and shows only in iMessage chats. SMS and RCS chats, and chats whose service isn't confirmed yet, accept the request and show nothing. Check the chat's `supports_typing_indicators` first. See [Typing and read receipts](/messaging/typing-and-read-receipts.md).

> **Can I send one-time passcodes?**
>
> Use a dedicated SMS provider for passcodes. Blujay is built for two-way conversations: texts to people who haven't replied are limited, which doesn't suit codes sent to someone who may never answer.

> **What happens when someone texts STOP or asks to stop?**
>
> On a Dedicated number, Blujay opts the contact out automatically when they text exactly `STOP` and nothing else. For any other wording, or on other plans, opt them out with the API. Either way Blujay then refuses sends to them with [`RECIPIENT_SUPPRESSED`](/errors/recipient-suppressed). There is no webhook for opt-outs yet; read `opted_out` on the contact. See [Opt-outs](/opt-outs.md).

## Replies and webhooks

> **How do I get replies?**
>
> Subscribe a webhook to `message.received`. See [Webhooks](/webhooks/overview.md) and [Receive messages](/messaging/receive-messages.md).

> **Will I know when a message is delivered and read?**
>
> For iMessage, yes: you get `delivered`, and `read` when the person has read receipts on. RCS reports them when the carrier does. SMS stops at `sent`, because carriers don't report delivery reliably. See [Track a message](/messaging/lifecycle.md).

> **I received the same webhook twice. Is that a bug?**
>
> No. Delivery is at least once, so an event can arrive more than once, for example after a retry. Store each `event_id` you've handled and skip repeats. See [Delivery and retries](/webhooks/delivery.md).

> **My server was down. Did I lose webhook events?**
>
> Blujay retries each event 10 times over about 25 minutes. After that, list the missed deliveries and replay them. See [Delivery and retries](/webhooks/delivery.md).

## Numbers and limits

> **How many messages can I send?**
>
> A Dedicated number can message up to 50 new contacts a day once established (a new number starts lower and ramps up over about its first month), has room for 1,500 pending messages in its queue, and sends at most 30 messages a minute to the same person. At most 6 texts go to anyone in a row without a response. There's no hourly limit on texts. The live values are on each number in `GET /v1/phone-numbers`. API requests are limited to 600 reads, 120 writes and 60 attachment requests a minute. See [Phone numbers and limits](/phone-numbers.md) and [Rate limits](/rate-limits.md).

> **What happens if one of my numbers is replaced?**
>
> You get a [`phone_number.status_updated`](/webhooks/events#phone-numbers) webhook for the old number and one for the new number. Switch your sends to the new number's `phone_number_id`.

> **What should I do if a number's health drops?**
>
> Start fewer new conversations from it, focus on people who reply, and answer quickly. A `critical` number should stop starting new conversations; contact [support@blujay.io](mailto:support@blujay.io). See [Number health](/phone-numbers.md#number-health).

## Tools and AI

> **Is there an SDK?**
>
> Not yet. Every example uses plain HTTP. There's a ready-made [Postman collection](/api-reference/introduction.md#use-the-postman-collection), and the [OpenAPI file](/build-with-ai.md#give-your-assistant-the-whole-docs) works with code generators.

> **Can my AI assistant read these docs?**
>
> Yes. Give it [every page in one file](https://docs.blujay.io/llms-full.txt), connect it to the docs MCP server, or use the **Copy page** menu on any page. See [Build with AI](/build-with-ai.md).

## Next steps

> **[Glossary](/glossary.md)**
>
> Every term the docs use.

> **[Support](/support.md)**
>
> How to get help.


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