---
title: "Handle Inbound Sms"
method: POST
path: "/sms/webhook/inbound"
tags: ["SMS", "sms"]
---

# Handle Inbound Sms

`POST /sms/webhook/inbound`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/sms/webhook/inbound`
- Auth: none declared

Handle inbound SMS messages from Twilio.

Order matters here, and each step is load-bearing:

1. Store the message. It is the audit record; it must not depend on us
   understanding the message.
2. STOP/START, before anything else looks at the body. Routing a STOP into an
   opt-in parser is how a person who asked to be left alone gets another text.
3. Claim the reply for exactly one flow — the info-request opt-in or an
   outbound text conversation — by recency, newest wins. Two live claimants for
   one number is ambiguous, and an ambiguous claim gets nothing: a link to the
   wrong matter is worse than no link.

Returns empty TwiML response to Twilio.

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/openintake/apis/openintake-api.md) - [All operations](https://skmtc.dev/openintake/apis/openintake-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openintake/apis/openintake-api/revisions/de90a8dcbc07?raw)
