# Twilio Webhook

> Twilio SMS webhook callback with message SID, status, and sender details.

- Name: `twilio-webhook`
- Categories: twilio
- Detail page: https://open-types.dev/types/twilio-webhook

## Install

```bash
# Types only
npx shadcn add @open-types/twilio-webhook

# Types + Zod v4 validators
npx shadcn add @open-types/twilio-webhook-zod

# Types + real-world examples
npx shadcn add @open-types/twilio-webhook-examples
```

## Types

```typescript
export interface TwilioSMSWebhook {
  MessageSid: string;
  AccountSid: string;
  From: string;
  To: string;
  Body: string;
  NumMedia: string;
  NumSegments: string;
  SmsStatus: string;
  ApiVersion: string;
  MessageStatus?: string;
}
```

## Zod validator

```typescript
import * as z from "zod";
import type { TwilioSMSWebhook } from "../types/twilio-webhook";

export const twilioSMSWebhookSchema = z.object({
  MessageSid: z.string(),
  AccountSid: z.string(),
  From: z.string(),
  To: z.string(),
  Body: z.string(),
  NumMedia: z.string(),
  NumSegments: z.string(),
  SmsStatus: z.string(),
  ApiVersion: z.string(),
  MessageStatus: z.string().optional(),
}) satisfies z.ZodType<TwilioSMSWebhook>;

export type { TwilioSMSWebhook } from "../types/twilio-webhook";
```

## Examples

```typescript
// Source: https://www.twilio.com/docs/sms/twiml#twilios-request-to-your-application
// Captured: 2026-05
import type { TwilioSMSWebhook } from "../types/twilio-webhook";

const inbound = {
  MessageSid: "SMabcdef0123456789abcdef0123456789",
  AccountSid: "ACabcdef0123456789abcdef0123456789",
  From: "+14155555678",
  To: "+14155551234",
  Body: "Hello from the SMS gateway",
  NumMedia: "0",
  NumSegments: "1",
  SmsStatus: "received",
  ApiVersion: "2010-04-01",
} as const satisfies TwilioSMSWebhook;

export const twilioSMSWebhookExamples = {
  inbound,
  inboundWithStatus: { ...inbound, MessageStatus: "received" } satisfies TwilioSMSWebhook,
  mms: {
    ...inbound,
    MessageSid: "SMmms0123456789abcdef0123456789ab",
    NumMedia: "1",
    Body: "Check out this photo",
  } satisfies TwilioSMSWebhook,
  longText: {
    ...inbound,
    MessageSid: "SMlong0123456789abcdef0123456789a",
    Body: "Reply STOP to opt out. ".repeat(8),
    NumSegments: "3",
  } satisfies TwilioSMSWebhook,
  deliveryStatus: {
    ...inbound,
    MessageSid: "SMdlv0123456789abcdef0123456789ab",
    Body: "",
    SmsStatus: "delivered",
    MessageStatus: "delivered",
  } satisfies TwilioSMSWebhook,
} as const;
```
