{"_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":"loopmessage","urls":{"read":"https://miscsubjects.com/api/articles/loopmessage/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/loopmessage/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/loopmessage/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/loopmessage/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/loopmessage/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/loopmessage/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/loopmessage/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":"loopmessage","title":"LoopMessage: an iMessage, SMS, RCS and WhatsApp carrier API metered by daily contacts","register":"reference","tags":["imessage","messaging-api","loopmessage","vendor-reference"],"updated_at":"2026-09-22T05:11:01.278Z","body_excerpt":"LoopMessage is a cloud messaging service that sends iMessage, SMS, RCS and WhatsApp through one API from sender identities it manages, and it describes itself as a carrier: \"Omnichannel messaging carrier for businesses and AI assistants. Send iMessage, SMS, RCS and WhatsApp through one API and reduce communication costs.\" The customer does not run a Mac or an iPhone. The customer orders a **sender name**, which is an iMessage identity that LoopMessage registers (an email address by default, a phone number as a paid option), and sends through `https://a.loopmessage.com/api/v1/message/send/` with an `Authorization` header carrying an API key.\n\nTwo more terms matter. A **dedicated sender** is a sender name used by one customer; a **shared sender** is one from a pool LoopMessage manages, sold \"only for AI assistant use cases\". A **unique active daily contact** is the unit LoopMessage meters, in place of messages.\n\n## The send call\n\nOne endpoint carries every send. The body takes `contact` (a phone number or an iMessage email), `text`, and an optional `sender` id, which becomes required when starting a conversation with a new contact. Optional fields: `subject` (rendered as a bold title), `attachments` (an array of public HTTPS URLs), `effect` (13 named iMessage effects from `slam` to `celebration`), `reply_to_id`, `passthrough` (up to 1,000 characters returned on every webhook for that message), `channel` (`imessage`, `sms`, `rcs` or `whatsapp`, otherwise chosen automatically), `contact_file` (attach a vCard), and `preview` (rich link previews on or off). The same endpoint sends into an iMessage group. Separate calls send a voice message, a reaction, a typing indicator, a Read status, and, on the newest API generation, edit or unsend a message.\n\nThe response is a queue receipt, not a delivery: \"When you receive a successful response with code 200 from send request, it means that the server accepted your request for send and added it to the queue.\" Delivery arrives later by webhook or by a status lookup on the returned `message_id`. Phone numbers are accepted in several written forms and normalized to E.164.\n\n## Webhooks\n\nLoopMessage posts JSON to a URL registered per organization and expects a 200 within 15 seconds; anything else is retried. Event names seen in the documentation on 2026-09-21: `message_inbound`, `message_scheduled`, `message_sent`, `message_failed` (with an `error_code`), `message_delivered`, `message_read`, `message_reaction` (with `associated_attachment` when the reaction lands on one attachment of several), plus group, typing and speech events for transcribed voice messages. A webhook-history page in the dashboard shows past deliveries.\n\n## Sending first, and the limits\n\nLoopMessage's pricing page answers the question it expects most: \"Is it possible to send an outbound text first?\" Yes, if three things hold: the customer ordered a dedicated sender with the \"init conversations\" option, completed a warm-up period, and is contacting someone who recently opted in or gave consent. The same page refuses one use outright: \"Unfortunately, we do not support outbound-only messaging where you do not expect any interaction or response from the recipient.\" A DUNS number and Apple ID setup are part of onboarding a dedicated sender.\n\nPlan limits are counted in contacts, not messages: \"You have unlimited messaging with limits on the number of unique contacts per day and per month.\" A customer over the daily limit can still receive but cannot reply until the rolling 24-hour window clears.\n\n## Plans and prices\n\nFrom loopmessage.com/pricing on 2026-09-21. Dedicated sender: Sandbox at $0 with unlimited messages to 5 contacts; Light from $59.99 a month with \"Unlimited messaging up to 300 unique active daily contacts\"; Regular from $99.99 a month up to 1,000. Add-ons on a dedicated sender: a phone number in place of an email identity at $15 a month or $15 once; SMS/RCS fallback with call forwarding at $15 a month (requires the phon","ranking":"safety-first (interaction_risk/limitations), then quote-gated effective_weight","claims":[{"id":"c1","text":"LoopMessage is a cloud messaging service that sends iMessage, SMS, RCS and WhatsApp through one API from sender identities it registers and manages, and calls itself a carrier.","tier":"definition","section":"LoopMessage: an iMessage, SMS, RCS and WhatsApp carrier API","interaction_risk":false,"status":"active","source_ids":["s1"],"why_material":"defines the object and the sender-name model","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c2","text":"A 200 from LoopMessage's send endpoint means the request was queued, not delivered; delivery arrives by webhook or a status lookup on the returned message id.","tier":"observational","section":"The send call","interaction_risk":false,"status":"active","source_ids":["s2"],"why_material":"the same acceptance-versus-delivery distinction every vendor draws","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false},{"id":"c3","text":"LoopMessage meters plans by unique active daily contacts, 300 on Light at $59.99 and 1,000 on Regular at $99.99 a month, and refuses outbound-only messaging that expects no reply.","tier":"observational","section":"Plans and prices","interaction_risk":false,"status":"active","source_ids":["s3","s4"],"why_material":"the pricing unit and the hard refusal that shape what can be built on it","retracted_at":null,"retraction_reason":null,"challenged_by":[],"effective_weight":0.1,"quote_gated":false}],"sources":[{"id":"s1","url":"https://loopmessage.com/llms.txt","title":"LoopMessage llms.txt","quote":"Omnichannel messaging carrier for businesses and AI assistants. Send iMessage, SMS, RCS and WhatsApp through one API and reduce communication costs.","summary":"Docs map: API pages, helpdesk, roadmap, changelog.","claim_ids":[],"hash":"b79a15915fb271efed5224d4046745f857d676967464193e931e929724378b1e"},{"id":"s2","url":"https://loopmessage.com/apidocs/send-message","title":"LoopMessage Sending Messages","quote":"When you receive a successful response with code 200 from send request, it means that the server accepted your request for send and added it to the queue.","summary":"The send endpoint, its fields, and the queue-receipt semantics.","claim_ids":[],"hash":"77169199a63328beae5e93f0aafdc5361cf7febea17d8fb891f2b43266ed471d"},{"id":"s3","url":"https://loopmessage.com/pricing","title":"LoopMessage pricing","quote":"Unfortunately, we do not support outbound-only messaging where you do not expect any interaction or response from the recipient.","summary":"Dedicated and shared plans, add-ons, the send-first conditions and the cold-messaging refusal.","claim_ids":[],"hash":"bdf67829f46420f5d633b5d94989c5544d2e4a3569e615cb7225a58eb8c4edbe"},{"id":"s4","url":"https://loopmessage.com/helpdesk/pricing-plan-limit","title":"How the pricing plan limits work?","quote":"You have unlimited messaging with limits on the number of unique contacts per day and per month.","summary":"How daily and monthly contact limits are counted and what happens at the limit.","claim_ids":[],"hash":"bb2b20c09db1a07973f409a56b2d6be70ba747d468fcdf89c92a0593f318af80"},{"id":"s5","url":"https://loopmessage.com/apidocs/mcp","title":"LoopMessage MCP","quote":"LoopMessage provides a remote Model Context Protocol (MCP) server that allows compatible AI tools and coding assistants to access the latest LoopMessage documentation directly.","summary":"A documentation-search MCP server, not a sending one.","claim_ids":[],"hash":"2941dadcb4d4e4f053201912a3fd6d9c4ac54fd375f6a7da5a4a5ec06f066901"}],"anecdotal_sources":[],"scientific_sources":[],"user_reports":[],"related_articles":[],"question_graph":{"slug":"loopmessage","questions":[],"evidence":[],"edges":[],"counts":{"questions":0,"evidence":0,"edges":0}},"honesty":{"active_claims":3,"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":3,"claims_total":3,"sources":5,"anecdotal":0,"scientific":0,"user_reports":0,"questions":0,"evidence_ingests":0}}