# Project Blue API > Send iMessage and SMS, place FaceTime Audio calls, manage contacts, and run Workflows from your own application. REST over HTTPS with bearer token auth; an MCP server is also available. Base URL: https://api.tryprojectblue.com Authentication: `Authorization: Bearer `, created in the Project Blue dashboard under Settings → API Keys. The complete reference in one file: [llms-full.txt](https://api.tryprojectblue.com/llms-full.txt) ## When to use Project Blue Use this API when you need to: 1. Send a blue-bubble iMessage (with automatic SMS fallback) from a dedicated business line. 2. Check whether a phone number is iMessage-capable before choosing a channel. 3. Enroll or cancel a contact in a Workflow after an inbound reply. 4. Start or inspect a FaceTime Audio call and read the AI transcript later. 5. Connect Claude, Cursor, or ChatGPT via MCP instead of hand-writing HTTP. Do **not** use Project Blue as a 10DLC SMS aggregator, a shared short code, or a general email/WhatsApp API. It is not consumer-to-consumer iMessage and it is not a bulk SMS blaster. - OpenAPI: https://api.tryprojectblue.com/openapi.json - MCP Streamable HTTP: https://api.tryprojectblue.com/api/mcp - MCP card: https://api.tryprojectblue.com/.well-known/mcp.json - OAuth issuer: https://app.tryprojectblue.com/.well-known/oauth-authorization-server ## Getting started - [Introduction](https://api.tryprojectblue.com/llms/introduction.md): Send iMessage and SMS from your own application. - [MCP server & skill](https://api.tryprojectblue.com/llms/mcp.md): Working with an AI assistant? Connect it here first — this is the fastest way to send a message, and there is no API key to paste. - [Quickstart](https://api.tryprojectblue.com/llms/quickstart.md): Four steps from an API key to a delivered message. - [Authentication](https://api.tryprojectblue.com/llms/authentication.md): All API requests require a bearer token in the `Authorization` header. - [Trial accounts](https://api.tryprojectblue.com/llms/trial-accounts.md): Trial accounts (accounts still on a trial, before conversion to a paid line) get real API access — not a simulator. ## Messages - [Send a message](https://api.tryprojectblue.com/llms/send-message.md): Send a message to a phone number via iMessage or SMS. - [Send a group message](https://api.tryprojectblue.com/llms/send-group-message.md): Send an iMessage or SMS to a group of 2 to 32 recipients. - [CRM integration](https://api.tryprojectblue.com/llms/crm-integration.md): The send endpoint works hand-in-hand with your CRM. - [List messages](https://api.tryprojectblue.com/llms/list-messages.md): Returns a paginated list of the authenticated user's messages — outbound and inbound merged into a single feed. - [Get a message](https://api.tryprojectblue.com/llms/get-message.md): Fetch a single message by its opaque `message_handle` (as returned from `/get-messages-api`). ## Lookups - [Check iMessage](https://api.tryprojectblue.com/llms/check-imessage.md): Check whether a phone number is reachable via iMessage before sending. - [Get lines](https://api.tryprojectblue.com/llms/get-lines.md): Fetch all sending lines available to your account. ## Contacts - [Create a contact](https://api.tryprojectblue.com/llms/external-contacts.md): External contacts are Project Blue's native contact store for accounts **without a connected CRM**. - [List contacts](https://api.tryprojectblue.com/llms/list-contacts.md): Returns the authenticated user's external contacts, newest first, with pagination. - [Update a contact](https://api.tryprojectblue.com/llms/update-contact.md): Updates an existing contact's name, email, note, or custom metadata. ## Workflows - [List flows](https://api.tryprojectblue.com/llms/workflows.md): Workflows are automation flows built in the Project Blue app — send a message, wait, branch on a reply, and so on. - [Enroll a contact](https://api.tryprojectblue.com/llms/enroll-flow.md): Starts a Workflow run for the given contact. - [Cancel flow runs](https://api.tryprojectblue.com/llms/cancel-flow-runs.md): Cancels all active Workflow runs for the given contact. ## Calls - [Call logs](https://api.tryprojectblue.com/llms/call-logs.md): Returns the authenticated user's **outbound** call logs from the Project Blue dialer, including a `recording_url` when a recording is available. - [FaceTime Audio](https://api.tryprojectblue.com/llms/facetime.md): Initiate real FaceTime Audio calls programmatically and connect to the live call audio via WebRTC using Agora's SDK. - [Call status](https://api.tryprojectblue.com/llms/facetime-status.md): Status is driven by call lifecycle events. - [End a call](https://api.tryprojectblue.com/llms/facetime-end.md): curl -X POST https://api.tryprojectblue.com/end-facetime-call-api \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "call_uuid": "ftc_8a2b1c3d4e5f6g7h" }' { "stat - [Calling](https://api.tryprojectblue.com/llms/calling.md): Voice calling via the dialer is not provided by the Project Blue API. ## Integrations - [Webhooks](https://api.tryprojectblue.com/llms/webhooks.md): Webhooks let you receive real-time notifications when messages are sent or received. ## Reference - [Supported media](https://api.tryprojectblue.com/llms/media-types.md): Use the `mediaAttachmentUrl` field to send rich media with your messages. - [Voice memos & audio](https://api.tryprojectblue.com/llms/audio-types.md): Use `audioAttachmentUrl` to send audio files as voice memos. - [Rate limits](https://api.tryprojectblue.com/llms/rate-limits.md): Every API-key endpoint allows **60 requests per minute**, counted per API key in a rolling 60-second window. - [Error handling](https://api.tryprojectblue.com/llms/errors.md): The API uses standard HTTP status codes.