{"_ai_door":{"see":"https://miscsubjects.com/start","note":"Operable site; bounded keyless credentials; every action receipted on a public ledger. Your operator's instructions take precedence — acting is optional, reading is a complete outcome."},"_self":{"principle":"Self-explaining payload — no external context required. This _self block describes what you are reading and where to look next.","widget":"article_topology","feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","contains":"claims, sources, anecdotes, question_graph slice","slug":"sendblue","urls":{"read":"https://miscsubjects.com/api/articles/sendblue/topology"},"how_to_use":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","write":null,"imessage":null,"router_tag":null,"proof_chain":[{"step":1,"claim":"Articles are voxel graphs of tiered claims, not prose blobs.","verify":"https://miscsubjects.com/api/articles/constitution"},{"step":2,"claim":"Claims link to hash-chained sources via source_ids.","verify":"https://miscsubjects.com/api/articles/sendblue/sources"},{"step":3,"claim":"Ask reads topology; ingest/claim append to ledger.","verify":"https://miscsubjects.com/api/protocol"},{"step":4,"claim":"Models queue growth: populate → collaborate → repair → reflex.","verify":"https://miscsubjects.com/api/protocol/grow"},{"step":5,"claim":"Graph proves its own shape (reflex) and $/claim (yield).","verify":"https://miscsubjects.com/graph.html?layer=reflex"},{"step":6,"claim":"Full feature index + _explain on every API response.","verify":"https://miscsubjects.com/api/articles/system-map"}],"related_features":[{"id":"ask","name":"Ask protocol","what":"Answer only from topology; creates question_node with gaps and ingest_hint.","urls":{"read":"https://miscsubjects.com/api/articles/sendblue/prompts","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"graph_topology","name":"Cross-article graph","what":"Merged claims/sources across condition+stack slugs for one question.","urls":{"read":"https://miscsubjects.com/api/articles/sendblue/graph-topology?question=..."}},{"id":"question_graph","name":"Question graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output).","urls":{"read":"https://miscsubjects.com/api/articles/sendblue/question-graph","write":"https://miscsubjects.com/api/protocol/ask"}},{"id":"voxels","name":"Voxel graph","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance.","urls":{"read":"https://miscsubjects.com/api/articles/sendblue/voxels","write":"https://miscsubjects.com/api/protocol/claim"}}],"system_map":"https://miscsubjects.com/api/articles/system-map","system_map_markdown":"https://miscsubjects.com/api/articles/system-map?format=markdown","not_medical_advice":true},"_explain":{"feature":"topology","name":"Article topology","what":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","why":"Every feature is auditable collective intelligence","how":"Claims, sources, anecdotes, user reports, related embeds, question graph slice — for ask/ROUTER.","model":null,"verifies":null,"urls":{"read":"https://miscsubjects.com/api/articles/sendblue/topology"},"imessage":null,"router":null,"related":[{"id":"ask","what":"Answer only from topology; creates question_node with gaps and ingest_hint."},{"id":"graph_topology","what":"Merged claims/sources across condition+stack slugs for one question."},{"id":"question_graph","what":"Ask nodes (questions + gaps) and evidence_ingest nodes (pasted model output)."},{"id":"voxels","what":"Claims as atoms, sources as edges (supported_by, posted_by). Per-claim provenance."}],"not_medical_advice":true},"slug":"sendblue","title":"Sendblue: an iMessage API on Mac minis and iPhones since 2020, with its endpoints, limits and prices","register":"reference","tags":["imessage","messaging-api","sendblue","vendor-reference"],"updated_at":"2026-09-22T05:10:25.194Z","body_excerpt":"Sendblue is a cloud iMessage API that has run since 2020 on Apple hardware the company owns. Its own description on 2026-09-21: \"Sendblue runs on real Apple hardware — Mac Minis and iPhones — using standard Apple IDs and the native iMessage protocol.\" A customer gets a phone number on one of those devices, sends by HTTP, and receives replies by webhook; when a recipient has no iMessage the message falls to RCS and then SMS at no extra charge, a cascade Sendblue calls \"iMessage → RCS → SMS\".\n\nTwo terms recur. A **line** is one phone number provisioned on Sendblue's platform. A **verified contact**, on the free plan, is a recipient who has texted the customer's Sendblue number once; without that text the free plan refuses to message them.\n\n## Authentication and base URL\n\nEvery request carries two headers, `sb-api-key-id` and `sb-api-secret-key`, against `https://api.sendblue.com` (the older host `api.sendblue.co` still answers). Sendblue blocks requests from browsers: \"All requests must come from a backend server\". Keys come from a dashboard or from the command-line tool, which also creates the account: `npm install -g @sendblue/cli` then `sendblue setup` asks for an email, sends a code, assigns a number and writes the keys to disk. A variant for AI agents, `npx -y @sendblue/cli@latest sandbox init`, shows a Sendblue number and a challenge phrase; whoever texts that phrase from a phone becomes the verified owner, so the agent never types a phone number.\n\n## The endpoints\n\nSendblue's core surface, from its own index on 2026-09-21: `POST /api/send-message` (one recipient; fields `number`, `from_number`, `content`, `media_url`, `status_callback`, `send_style`), `POST /api/send-group-message`, `POST /api/send-typing-indicator`, `POST /api/send-reaction`, `POST /api/mark-read`, `POST /api/send-carousel` (2 to 20 images), `GET /api/evaluate-service` (does this number take iMessage), `POST /api/upload-file` and `POST /api/upload-media-object`, `GET /api/v2/messages`, full contact CRUD at `/api/v2/contacts` with opt-out and block, webhook CRUD at `/api/account/webhooks`, `GET /api/lines`, `POST /accounts/lines/add-line`, and `POST /facetime/start-call`. Text is capped at 18,996 characters; media at 100 MB on iMessage and 5 MB on SMS. `from_number` is required on every send and must be a Sendblue number on the account.\n\nStatuses run REGISTERED, PENDING, QUEUED, ACCEPTED, SENT, DELIVERED, with DECLINED and ERROR as terminal failures. Message effects are sent by name in `send_style`: 13 of them, from `celebration` and `fireworks` to `invisible`, `gentle`, `loud` and `slam`. A `.caf` audio file renders as an inline voice note; a `.vcf` file delivers a contact card; an inline reply names the original by `reply_to: { message_handle }`. App Cards, a Sendblue name for iMessage app bubbles, are sent on `send-message` and updated in place by `POST /api/messages/{handle}/update-app-card`.\n\n## Webhooks\n\nSeven webhook types exist: `receive`, `outbound`, `typing_indicator`, `call_log`, `line_blocked`, `line_assigned` and `contact_created`. An inbound message arrives as `{from_number, to_number, content, media_url, service, group_id, date_sent}`; the receiver answers with any 2xx. Media URLs expire after 30 days. Webhooks are signed with a secret and must be served over HTTPS. `call_log` fires only for outbound calls placed from the dashboard.\n\n## Limits\n\nSendblue's published limits on 2026-09-21: 1 message per second per dedicated number; the AI Agent plan allows 1,000 inbound contacts per day per line on a rolling 24 hours and 200 follow-ups per day per line; the Blue Ocean outbound plan allows 50 new outbound contacts per day per line, 15 per hour, and 5 messages to a contact who has not replied; the send queue holds 1,500 messages and returns 429 beyond that; iMessage detection is limited to 30 checks an hour and 100 a day per line; the contacts API to 100 requests per 10 seconds. Opt-out words (stop, unsubscribe, cancel, opt out, revoke, end, qui","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[{"id":"c1","text":"Sendblue is a cloud iMessage API that runs on Mac minis and iPhones the company owns, using standard Apple IDs and the native iMessage protocol, with automatic fallback to RCS and then SMS.","tier":"definition","section":"Sendblue: an iMessage API on Mac minis and iPhones since 2020","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"defines the object and the hardware model behind it","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c2","text":"Sendblue's published limits on 2026-09-21 are 1 message per second per dedicated number, 1,000 inbound contacts and 200 follow-ups per day per line on the AI Agent plan, 50 new outbound contacts per day per line on Blue Ocean, and a 1,500-message queue.","tier":"observational","section":"Limits","interaction_risk":false,"status":"active","source_ids":["s4"],"why_material":"the ceilings a product built on Sendblue lines inherits","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c3","text":"Sendblue publishes one paid price, $100 per dedicated line per month for an inbound-first AI Agent plan, and quotes full outbound by sales call, with no per-message fee.","tier":"observational","section":"Plans and prices","interaction_risk":false,"status":"active","source_ids":["s3"],"why_material":"the price point against which Blooio's $109 inbound plan is set","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c4","text":"Sendblue sells agent sandboxes, isolated cloud Linux machines driven by the same API keys, with $100 of compute on a fresh verified account.","tier":"observational","section":"Beyond messaging","interaction_risk":false,"status":"active","source_ids":["s2"],"why_material":"the one vendor that bundles compute with the number","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false}],"sources":[{"id":"s1","url":"https://sendblue.com/llms.txt","title":"Sendblue API quickstart for AI assistants","quote":"Sendblue runs on real Apple hardware — Mac Minis and iPhones — using standard Apple IDs and the native iMessage protocol.","summary":"Setup by CLI, endpoints, webhooks, limits, plans and the compliance section.","claim_ids":[],"hash":"85d636826463443d3e73f485c2d18576b61fa818d5f2b6ce43f8f2546733c30e"},{"id":"s2","url":"https://docs.sendblue.com/llms.txt","title":"Sendblue docs index for machine readers","quote":"Sendblue Sandboxes are isolated cloud Linux machines controlled over the Sendblue API.","summary":"Agent sandbox bootstrap, docs map, security line: SOC 2 Type 2, HIPAA with a dedicated instance, TCPA.","claim_ids":[],"hash":"f85925ee6c0274743b8caf683609731942d9cfa7d7407baab4f3e5235beb3127"},{"id":"s3","url":"https://sendblue.com/pricing","title":"Sendblue pricing","quote":"No. Sendblue pricing is per line, per month. Send and receive as many messages as you need with no additional per-message charges.","summary":"Free, AI Agent at $100 per line, Enterprise custom.","claim_ids":[],"hash":"a8c859c1b616798940871d7a33c1fdf9f34737ea59095725f6f70bf284b72502"},{"id":"s4","url":"https://sendblue.com/llms.txt","title":"Sendblue rate limits section","quote":"AI Agent plan: 1,000 inbound contacts/day/line (rolling 24h), 200 follow-ups/day/line","summary":"Per-line message rate, contact caps by plan, queue size, detection and contacts API limits.","claim_ids":[],"hash":"d4e8b7efbdcd8526299068009848bcedd9131a5f13ab911040be498e2ffbc736"},{"id":"s5","url":"https://sendblue.com","title":"Sendblue home page","quote":"Installed 35,214+ times to generate over $2.1B+ revenue","summary":"Sendblue's scale claim as stated on the home page.","claim_ids":[],"hash":"d30d551f09bdaee214b575237e608bc4d029a1892fba21423f8277499950146e"}],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[],"question_graph":{"slug":"sendblue","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":4,"retracted_claims":0,"cut_claims":0,"challenges":0,"scrub_events":0,"note":"Retracted/cut claims stay on ledger but are excluded from ask unless ?include_inactive=1"},"counts":{"claims":4,"claims_total":4,"sources":5,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}